Метод doesntHave
Метод doesntHave применяется к запросу Eloquent и позволяет выбрать записи,
у которых нет связанных записей в указанном отношении. Первым параметром
передаётся имя отношения, вторым - оператор сравнения для количества связей,
третьим - значение для сравнения. Если оператор не указан, используется равенство 0.
Синтаксис
<?php
Model::doesntHave($relation, $operator = '=', $count = 0);
?>
Пример
Давайте выберем всех пользователей, у которых нет ни одной статьи:
<?php
use AppModelsUser;
$users = User::doesntHave('articles')->get();
foreach ($users as $user) {
echo $user->name;
}
?>
Результат выполнения кода:
["John Doe", "Jane Smith", "Bob Johnson"]
Пример
Давайте выберем пользователей, у которых меньше 3 статей, используя оператор '<':
<?php
use AppModelsUser;
$users = User::doesntHave('articles', '<', 3)->get();
foreach ($users as $user) {
echo $user->name . ' - ' . $user->articles->count() . ' articles';
}
?>
Результат выполнения кода:
["John Doe - 0 articles", "Jane Smith - 1 articles", "Bob Johnson - 2 articles"]
Пример
Давайте выберем пользователей, у которых нет комментариев, используя вложенное отношение:
<?php
use AppModelsUser;
$users = User::doesntHave('comments')->get();
foreach ($users as $user) {
echo $user->name;
}
?>
Результат выполнения кода:
["Alice Brown", "Charlie Wilson"]
Смотрите также
-
метод
has,
который проверяет наличие связанных записей -
метод
whereDoesntHave,
который добавляет дополнительные условия в запрос отсутствия -
метод
whereHas,
который фильтрует по наличию связанных записей с условиями -
метод
orWhereHas,
который добавляет условие наличия связей через ИЛИ