$users=Group::find(3)->users;
$users->whereDoesntHave('subgroups')->get();
它不起作用,因为我做错了,但我不知道如何得到结果。 组和子组与用户有多对多的关系
您可以使用whereHave
和has
或doesthave
的组合来基于关系的存在来限制此查询:
User::whereHas('groups', function ($query) {
$q->where('group_id', 3);
})->doesntHave('subgroups')->get();
其中有
将从查询返回的用户限制为仅属于“id”为3的组的用户。 Doesnthave
将返回的用户限制为仅与任何子组没有任何关系的用户。 组合起来,该查询将查找组3中的用户,并且不属于任何子组。
Laravel 7.x文档-口才-关系-查询关系存在wherehave
Laravel 7.x文档-雄辩-关系-查询关系Absensedonnthave
使用该查询,您将获得user_id=3
且没有任何子组的用户
$users= User::whereHas('groups', function($q){
$q->where('group_id', 3);
})->whereDoesntHave('subgroups')->get()