Я создаю приложение с использованием Eloquent и нахожусь на обломке, я использую отношение Pivot для многих ко многим. ссылка: https://laravel.com/docs/5.0/eloquent#many-to-manyeloquent multiple whereHas ('pivot_table_X') AND whereHas ('pivot_table_X')
Модель пользователя
- ID
- user_name
Role Model
- ID
- role_name
User-Role Model (сводную таблицу)
- ID
- user_id
- ROLE_ID
Если я хочу, чтобы все пользователи с ID роли 1
, я буду просто просто:
$users = $app->users->with('roles')->has('roles')
->whereHas('roles' function($query) {
$query->where('role_id', 1);
})
->get();
С этим, я могу успешно получить все пользователи с ролью ид = 1.
[Проблема] Теперь облом будет, когда мне нужно, чтобы получить все пользователи с Role id = 1 AND Role id = 2
(оба администратора и модератора в моем случае)
Я попытался запустить это:
$users = $app->users->with('roles')->has('roles')
->whereHas('roles' function($query) {
$query->where('role_id', 1);
})
->whereHas('roles' function($query) {
$query->where('role_id', 2);
})
->get();
Но исчерпал мое время выполнения PHP, есть правильный способ справиться с этим? Я действительно надеюсь на эффективный способ сделать это.
Спасибо
Не должно быть ** ИЛИ ** вместо ** И ** для бота идентификаторов роли? –
@SougataBose Привет! Я полагаю, что ее ** И **, так как ось табличная модель имеет несколько ** role_id ** за один ** user_id **, что я хочу достичь, это получить все ** Пользователи ** где и идентификатор '2 и 3 'находятся в ** role_id ** –