繁体   English   中英

如何在laravel模型中定义多对多关系?

[英]how to define many to many relationship in laravel models?

我有两个主表。 userstasks 主键列名in_user_id用户表和in_task_id的任务表。

有关系表users_tasks (以查看任务分配给了哪些用户,以及用户分配了哪些任务)。 外键列是in_task_id表中的in_task_idin_worker_id

我想在两个模型中定义用户和任务的关系( 多对多 )。 我已经阅读了这份文件 但在我的情况下,主键列是用户表中的in_user_id 但是,外键的列名在users_tasks表in_worker_id。

所以我不知道如何处理关系函数中的第四个参数( 在任务模型文件中return $this->belongsToMany('App\\User', 'users_tasks', 'in_task_id', ?); )。 in_user_idin_worker_id或需要定义更多内容的东西。 如果有人知道解决方案,将不胜感激。

尝试这个

$ this-> belongsToMany('App \\ User,'users_tasks','in_worker_id','in_user_id');

参数->模型,关系表,外键,主键

关系表也应按字母顺序排列。 (最佳方式)必须是task_users

laravel雄辩的文档中了解多对多关系

除了自定义联接表的名称之外,还可以通过将其他参数传递给belongsToMany方法来自定义表上键的列名。 第三个参数是您要在其上定义关系的模型的外键名称,而第四个参数是您要加入的模型的外键名称:

您的情况是:

return $this->belongsToMany('App\User', 'users_tasks', 'in_task_id', 'in_worker_id');

现在,这假设了一些事情:

  1. 您的用户和任务模型运行正常(因为您已经在模型中定义了非常规标识符)。
  2. 不确定是否仍然如此,但在Laravel的早期版本中,您的数据透视表(在这种情况下为users_tasks )也需要它自己的标识符列,通常是一个自动递增的id。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM