РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
289 of 1392 menu

Метод has

Метод has применяется к запросу Eloquent и позволяет отфильтровать записи по наличию или отсутствию связанных моделей. Первым параметром передаётся имя отношения, вторым - оператор сравнения (по умолчанию '>='), третьим - количество связанных записей (по умолчанию 1).

Синтаксис

<?php Model::has($relation, $operator = '>=', $count = 1); ?>

Пример

Давайте получим всех пользователей, у которых есть хотя бы одна статья:

<?php use AppModelsUser; $users = User::has('articles')->get(); foreach ($users as $user) { echo $user->name; } ?>

Результат выполнения кода:

["John Doe", "Jane Smith", "Bob Johnson"]

Пример

Давайте получим пользователей, у которых как минимум три статьи:

<?php use AppModelsUser; $users = User::has('articles', '>=', 3)->get(); foreach ($users as $user) { echo $user->name . ' - ' . $user->articles()->count(); } ?>

Результат выполнения кода:

["John Doe - 5", "Jane Smith - 3"]

Пример

Давайте получим пользователей, у которых нет ни одной статьи (используем метод doesntHave):

<?php use AppModelsUser; $users = User::doesntHave('articles')->get(); foreach ($users as $user) { echo $user->name; } ?>

Результат выполнения кода:

["Alice Brown", "Charlie Wilson"]

Пример

Давайте получим пользователей, у которых количество статей больше 2, но меньше 5 (комбинируем с методом where):

<?php use AppModelsUser; $users = User::has('articles', '>', 2) ->has('articles', '<', 5) ->get(); foreach ($users as $user) { echo $user->name . ' - ' . $user->articles()->count(); } ?>

Результат выполнения кода:

["Jane Smith - 3"]

Смотрите также

  • метод whereHas,
    который добавляет условия к связанным записям
  • метод has,
    который проверяет существование связанных записей
  • метод whereDoesntHave,
    который добавляет условия при отсутствии связей
  • метод doesntHave,
    который проверяет отсутствие связанных записей
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить