Используйте whereHas, чтобы найти все элементы, которые не имеют значения c (например, Пользователь и Роль - получить всех пользователей, которые не имеют роли администратора) - PullRequest
0 голосов
/ 11 февраля 2020

У меня есть две модели: пользователь и роль. Каждый пользователь имеет много ролей, таких как «администратор», «простой пользователь» и так далее. Я хочу, чтобы все пользователи не имели роли администратора. Я знаю, что это можно решить с помощью запроса на присоединение. Но я хочу использовать функцию "wherHas ()".

User table has id, name
Role table has id, slug, name
user_role as pivot table has user_id and role_id

В модели User

public function roles()
{
    return $this->belongsToMany('App\Role');
}

и в модели Role

public function users()
{
    return $this->belongsToMany('App\User');
}

Пример запроса:

$users = User::whereHas('roles', function ($query){
    $query->where('slug', '!=', 'ecoyar');
  })->get(); 

извините за мой английский sh!

1 Ответ

1 голос
/ 11 февраля 2020

Как запросить отсутствие связи :

use Illuminate\Database\Eloquent\Builder;

$users = App\User::whereDoesntHave('roles', function (Builder $query) {
    $query->where('slug', 'like', 'ecoyar');
})->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...