提问者:小点点

如何在laravel中获取未添加到任何子组中的组用户


$users=Group::find(3)->users;
    $users->whereDoesntHave('subgroups')->get();

它不起作用,因为我做错了,但我不知道如何得到结果。 组和子组与用户有多对多的关系


共2个答案

匿名用户

您可以使用whereHavehasdoesthave的组合来基于关系的存在来限制此查询:

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()