我正在开发的应用程序遇到了一些小问题..
我有下表:
1. Users
id,
first_name,
last_name
2. File_uploads
id,
name,
location
3. profile_link
id,
user_id,
file_id
在个人资料链接内,我已将 (user_id
) 设置为 Users
和 file_id
上 id
的外键code> 是 file_uploads
表上 id
的外键。
我创建了一个名为 Fileuploads
的模型,并将以下内容添加到 User
模型中:
public function profile_image()
{
return $this->hasOne('App\Fileuploads');
}
因为用户将在用户部分上传 1 个文件,即他们的个人资料图片。我在尝试访问时收到以下错误:
$user = \App\User::find(2);
dd($user->profile_image)
Column not found: 1054 Unknown column 'file_upload.user_id' in 'where clause' (SQL: select * from `file_upload` where `file_upload`.`user_id` = 2 and `file_upload`.`user_id` is not null limit 1)
但我并没有尝试访问 file_uploads
上的 user_id
因为这就是我有链接表的原因,但在这种情况下,它看起来并没有注册它.
大家有什么想法吗?
更新:
如果file_uploads
中的记录更改为与用户“2”相同的ID,并且我使用:return $this->hasOne('App\Fileuploads', 'id' , 'id');
然后立即找到配置文件。但是我怎样才能做到这一点,链接到链接表呢?
最佳答案
您的表描述的关系是 Users
和 File_uploads
之间的多对多关系,使用 profile_link
作为链接表。
如果您使用belongsToMany()您可以让它为您处理链接表,而不是 profile_image
关系上的 hasOne()
。像这样的事情:
public function profile_image()
{
return $this->belongsToMany('App\Fileuploads', 'profile_link', 'user_id', 'file_id');
}
因为这是被建模为多对多的,所以预计每个用户会有 > 1 个 File_uploads
记录,因此您将获得一个集合并需要访问像这样:
$user = \App\User::find(2);
dd($user->profile_image[0])
关于php - Laravel 5 - 用户个人资料图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31449982/