日志示例5:belongsToMany SQLSTATE[42S22]: Column not found


Laravel 5: belongsToMany SQLSTATE[42S22]: Column not found:

我想在我的表和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找到。

天哪,我找到我的问题了…我在控制器中有一个老方法,我加载