我尝试在laravel中使用连接表
role_user表包含roles_id和user_id列 roles表具有id和角色的名称 users表具有用户的id和名称
$roles = Role::leftJoin('role_user', 'roles.id', '!=' , 'role_user.role_id')
->select('roles.*', 'role_user.user_id', 'role_user.role_id')
->where('role_user.user_id','=',$name)
->get();
但似乎'!='
无法正常工作我尝试使用'='
并且工作正常
当我尝试使用'='
时,没有结果
我也试过
public function roles()
{
return $this->belongsToMany('App\Role');
}
@foreach($user->roles as $role)
{{ roles->name}}
@endForeach
但它显示了user_role和角色表的匹配ID,我想反过来想要显示角色表的行与user_role的表不匹配
答案 0 :(得分:1)
我想显示与
user_role
表不匹配的角色表行
使用whereDoesntHave()
方法:
$roles = Role::whereDoesntHave('users', function($q) use($name) {
$q->where('name', $name);
})->get();
在视图中:
@foreach ($roles as $role)
{{ role->name }}
@endforeach
不要忘记定义users()
关系:
public function users()
{
return $this->belongsToMany('App\User');
}
答案 1 :(得分:0)
在您的用户模型中创建功能角色
Role::whereNotIn('id',function($query){
$query->select('role_id')->from('role_user');
})->get();