我有两张主表。即users
和tasks
。用户表的主键列名称为in_user_id
,任务表为in_task_id
。
存在关系表users_tasks
(用于查看为哪些用户和用户分配了哪些任务的任务)。 users_tasks表中的外键列为in_task_id
和in_worker_id
。
我想在两个模型中定义用户和任务(多对多)的关系。我看过这个doc。但就我而言,主键列是users表中的 in_user_id 。但是外键列名是users_tasks表中的 in_worker_id 。
所以我不知道如何处理关系函数中的第四个参数(任务模型文件中的return $this->belongsToMany('App\User', 'users_tasks', 'in_task_id', ?);
)。 in_user_id
或in_worker_id
或其他内容需要定义更多内容。如果有人知道解决方案,我们将不胜感激。
答案 0 :(得分:1)
试试这个
$ this-> belongsToMany(' App \ User,' users_tasks',' in_worker_id', ' in_user_id');
params - >模型,关系表,外键,主键
关系表也应按字母顺序排列。 (最好的办法) 必须是 tasks_users
答案 1 :(得分:1)
来自laravel eloquent documentation on many-to-many relationships
除了自定义连接表的名称之外,您还可以通过将其他参数传递给belongsToMany方法来自定义表上键的列名。第三个参数是您定义关系的模型的外键名称,而第四个参数是您要加入的模型的外键名称:
在你的情况下,它将是:
return $this->belongsToMany('App\User', 'users_tasks', 'in_task_id', 'in_worker_id');
现在假设一些事情:
users_tasks
)也需要它自己的标识符列,通常是自动增加的ID。