我有两个模型,用户和角色。每个用户都有许多角色,例如“管理员”,“简单用户”等。 我想让所有不具有“管理员”角色的用户。我知道可以通过Join查询解决。但是我想使用“ wherHas()”函数。
User table has id, name
Role table has id, slug, name
user_role as pivot table has user_id and role_id
在用户模型中
public function roles()
{
return $this->belongsToMany('App\Role');
}
以及在角色模型中
public function users()
{
return $this->belongsToMany('App\User');
}
查询示例:
$users = User::whereHas('roles', function ($query){
$query->where('slug', '!=', 'ecoyar');
})->get();
对不起我的英语!
答案 0 :(得分:1)
How to query the absence of a relationship:
use Illuminate\Database\Eloquent\Builder;
$users = App\User::whereDoesntHave('roles', function (Builder $query) {
$query->where('slug', 'like', 'ecoyar');
})->get();