php - Laravel 5 - 用户个人资料图片

标签 php mysql laravel-5

我正在开发的应用程序遇到了一些小问题..

我有下表:

1. Users

   id, 
   first_name,
   last_name

2. File_uploads
   id, 
   name, 
   location

3. profile_link
   id, 
   user_id, 
   file_id

在个人资料链接内,我已将 (user_id) 设置为 Usersfile_idid 的外键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'); 然后立即找到配置文件。但是我怎样才能做到这一点,链接到链接表呢?

最佳答案

您的表描述的关系是 UsersFile_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/

相关文章:

mysql - 如何比较选择独特项目的两个结果?

MySQL - 最后按完全匹配排序

PHP:删除不在大列表中的行

php - Laravel 可选列的默认值

javascript - 我无法从我的网站播放 twilio 录音

php - 我想在提交表单后创建一个带有三个按钮的弹出窗口。我怎么做?

php - 想要在 URL 包含特定字符串时抛出 404 错误 - Wordpress

php - 在 php 循环中比较值时不支持的操作数类型

php - 更新 laravel mysql 数据库中的行

php - 在一个查询中从对话中选择发送给用户的所有消息