Laravel Entrust, запрос, где пользователи не имеют роли

Я хотел бы вернуть всех пользователей, у которых нет различных отношений существования и различных ролей.

На данный момент это работает правильно:

User::doesntHave('trusts')
        ->doesntHave('sites')
        ->pluck('email', 'name', 'id');

Я хотел бы также удалить пользователей с ролью администратора.

Пока что я попробовал:

User::doesntHave('trusts')
         ->doesntHave('sites')
         ->whereDoesntHave('roles', function ($query) {
             $query->hasRole(['admin']);
         })
         ->pluck('email', 'name', 'id')

Но это возвращает ошибку:

Вызов неопределенного метода Illuminate\Database\Query\Builder::hasRole()

Как я могу отфильтровать пользователей с определенной ролью?

1 ответ

Решение

Попробуй это

User::doesntHave('trusts')
         ->doesntHave('sites')
         ->whereDoesntHave('roles', function ($query) {
             $query->where('name', 'admin');
         })
         ->pluck('email', 'name', 'id')
Другие вопросы по тегам