Вопрос:

Laravel eloquent и запрос с двумя критериями таблиц соединения

laravel eloquent

8 просмотра

1 ответ

110 Репутация автора

Здесь ситуация.

У меня есть userтаблица, roleтаблица (разные пользователи могут иметь одинаковую роль) и postтаблица (разные пользователи могут быть связаны с одним и тем же постом - пост нескольких авторов). У меня также есть две таблицы соединения, которые связывают userи roleи userи и post. Я построил все отношения (многие ко многим).

Но теперь я пытаюсь получить всех пользователей, которые имеют определенный role(например, 'id' = 2) и внесли свой вклад в определенный пост (например, 'id' = 45).

Я могу сделать это по одному критерию:

$roles = App\Role::where('id', 2)->first();
foreach ($roles->users as $user) {

}

Но я не нашел решения с двумя критериями ( roleid и postid).

Автор: Peter Estiven Источник Размещён: 11.08.2019 07:23

Ответы (1)


0 плюса

2458 Репутация автора

Вы можете использовать отношения существования, чтобы достичь своей цели. И whereHas()функция для проверки существования отношений.

Предполагая, что вы определили отношения на моделях

$role_id = 2;
$post_id = 45;

$users = User::whereHas('role', function($query) use ($role_id) {
    $query->where('id', $role_id);
})
->whereHas('post', function ($query) use ($post_id) {
    $query->where('id', $post_id);
})
->get();
Автор: Tharaka Dilshan Размещён: 11.08.2019 07:49
Вопросы из категории :
32x32