Метод whereRelation
Метод whereRelation применяется к запросу Eloquent
и позволяет фильтровать записи по условиям, которые
применяются к связанным моделям. Первым параметром
передаётся имя отношения, вторым - колонка связанной
таблицы, третьим - оператор сравнения, четвёртым - значение.
Если оператор не указан, используется равенство.
Этот метод удобен, когда нужно получить записи,
удовлетворяющие условиям на связанные данные.
Синтаксис
<?php
Model::whereRelation($relation, $column, $operator, $value);
?>
Пример
Давайте отфильтруем статьи, у которых есть комментарии
с полем 'status' равным 'approved':
<?php
use AppModelsArticle;
$articles = Article::whereRelation('comments', 'status', 'approved')->get();
foreach ($articles as $article) {
echo $article->title;
}
?>
Результат выполнения кода:
["article 1", "article 3", "article 5"]
Пример
Давайте отфильтруем посты, у которых количество комментариев
больше 5:
<?php
use AppModelsPost;
$posts = Post::whereRelation('comments', 'post_id', '>', 5)->get();
foreach ($posts as $post) {
echo $post->title;
}
?>
Результат выполнения кода:
["post 2", "post 4"]
Пример
Давайте отфильтруем пользователей, у которых есть заказы
со статусом 'pending':
<?php
use AppModelsUser;
$users = User::whereRelation('orders', 'status', 'pending')->get();
foreach ($users as $user) {
echo $user->name;
}
?>
Результат выполнения кода:
["John Doe", "Jane Smith"]
Смотрите также
-
метод
whereHas,
который фильтрует по существованию связанных записей -
метод
whereDoesntHave,
который фильтрует по отсутствию связанных записей -
метод
where,
который фильтрует записи по условиям основной таблицы -
метод
get,
который выполняет запрос и возвращает коллекцию