【发布时间】:2018-08-01 16:06:03
【问题描述】:
我在 Laravel 5.5 的 eloquent 中遇到了多对多关系的错误
照亮\数据库\查询异常(42000) SQLSTATE[42000]:语法错误或访问冲突:1066 不是唯一的表/别名:'users'(SQL:选择
users.*、users.roles_id作为pivot_roles_id、users.users_id如pivot_users_id,users.id如pivot_id,users.created如pivot_created,users.updated如users,users, @987654337. 987654339@ fromusers内部连接 usersonusers.id=users.users_idwhereusers.roles_id= 2)
我有一个用户表、角色表和一个 user_role 表(数据透视表)。 user_role 表有以下列:id, users_id(fk from users table),roles_id (fk from roles table),created,updated,deleted。
在我的用户模型中
public function roles(){
return $this->belongsToMany(\App\roles::class,'roles','users_id','roles_id','id','id')->withPivot(['id','created','updated','deleted']);
}
在我的角色模型中
public function users(){
return $this->belongsToMany(\App\User::class,'users','roles_id','users_id','id','id')->withPivot(['id','created','updated','deleted']);
}
在我的控制器中我有
$roles = $this->rolesObject->whereNull('deleted')->orderBy('role')->get();
//Just for testing how to view the relationship won't be real code in the end
foreach($roles as $role){
foreach($role->users as $user){
dump($user->display_name);
}
}
查看文档,看起来我正在正确设置关系,但显然我没有,我不知道我做错了什么
【问题讨论】:
标签: php laravel many-to-many laravel-5.5 laravel-eloquent