设置laravel Eloquent关系时出错

时间:2016-02-14 05:33:01

标签: mysql laravel laravel-5 eloquent

我正在尝试使用雄辩的关系模型在Laravel建立关系,它看起来像下面那个

users
     id 
     email

projects 
     id
     name

user_projects
     user_id
     project_id
     role

我希望能够查询用户所属的项目,而不管他所拥有的角色。为此,我在我的用户模型中使用了以下内容。

  class User extends Model {

    public function allProjects() {

        return $this->belongsToMany('App\ProjectRoles', 'user_projects', 'user_id', 'project_id');

    }
}

但是由于这个原因,我的代码中出现了错误

 Syntax error or access violation: 1066 Not unique table/alias: 'user_projects' (SQL: select `user_projects`.*, `user_projects`.`user_id` as `pivot_user_id`, `user_projects`.`project_id` as `pivot_project_id` from `user_projects` inner join `user_projects` on `user_projects`.`id` = `user_projects`.`project_id` where `user_projects`.`user_id` = 2)

我不确定如何在关系中创建连接查询以执行此操作。任何帮助,将不胜感激。我经历了雄辩的文档,但即使那些例子完全符合我的要求,也无法得到结果。

1 个答案:

答案 0 :(得分:1)

您的belongsToMany关系与错误的模型有关。通常,您的枢轴表没有模型,但即使您这样做,您的belongsToMany关系也不会使用它。您的User模型应与您的Project模型相关。

你应该用这个:

class User extends Model {

    public function allProjects() {
        return $this->belongsToMany('App\Project', 'user_projects', 'user_id', 'project_id');
    }

}