我想在我的表和belongmany之间建立一个关系。这是我要连接的三张表。
fairkatert_task
-id
-user_id
-name
fairkatert_milestone
-id
-name
fairkatert_task_assign_milestone
-id
-milestone_id
-task_id
我使用了Eloquent的belongToMany方法。
public function getTasks()
{
return $this->belongsToMany(
'App'Http'Models'Task',
'fairkatert_task_assign_milestone',
'milestone_id',
'task_id'
);
}
,我只得到以下SQL错误消息:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'milestone_id' in 'where clause' (SQL: select * from `fairkatert_task` where `fairkatert_task`.`deleted_at` is null and (`milestone_id` is null))
但是我想我做的每件事都是对的,但是我不能原谅我的错误。
扩展Josef的评论,你直接看到了答案——你已经承认了。
无论你如何努力理解:
我做了,但我不明白为什么它在"fairkatert_task"表中寻找里程碑_id。
阅读Laravels关于belongsToMany
关系的文档,它说:
除了自定义连接表的名称外,还可以通过向belongsToMany方法传递附加参数来自定义表上键的列名。第三个参数是定义关系的模型的外键名,而第四个参数是要加入的模型的外键名:
return $this->belongsToMany('App'Role', 'user_roles', 'user_id', 'role_id');
你们的关系是:
public function getTasks()
{
return $this->belongsToMany(
'App'Http'Models'Task',
'fairkatert_task_assign_milestone',
'milestone_id',
'task_id'
);
}
第三个参数是定义关系的模型的外键名
这意味着您的第三个参数,milestone_id
正试图被fairkatert_task
找到。
天哪,我找到我的问题了…我在控制器中有一个老方法,我加载