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

Метод withExists

Метод withExists применяется к запросу Eloquent и позволяет проверить существование связанных записей. Он добавляет колонку с булевым значением, показывающим, имеет ли модель связанные записи. Первым параметром передаётся имя отношения, вторым необязательным - алиас для колонки.

Синтаксис

<?php Model::withExists($relation, $alias); ?>

Пример

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

<?php namespace AppHttpControllers; use AppModelsCategory; class CategoryController extends Controller { public function index() { $categories = Category::withExists('articles')->get(); foreach ($categories as $category) { echo $category->name . ': ' . ($category->articles_exists ? 'has articles' : 'no articles'); } } } ?>

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

"Technology: has articles" "Science: no articles" "Art: has articles"

Пример

Давайте укажем алиас для колонки с результатом проверки:

<?php namespace AppHttpControllers; use AppModelsArticle; class ArticleController extends Controller { public function index() { $articles = Article::withExists('comments', 'has_comments') ->get(); foreach ($articles as $article) { echo $article->title . ': ' . ($article->has_comments ? 'has comments' : 'no comments'); } } } ?>

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

"article 1: has comments" "article 2: no comments" "article 3: has comments"

Пример

Метод withExists также работает с отношениями, которые используют условия. Давайте проверим, есть ли у пользователей активные заказы:

<?php namespace AppHttpControllers; use AppModelsUser; class UserController extends Controller { public function index() { $users = User::withExists(['orders' => function ($query) { $query->where('status', 'active'); }])->get(); foreach ($users as $user) { echo $user->name . ': ' . ($user->orders_exists ? 'has active orders' : 'no active orders'); } } } ?>

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

"Alice: has active orders" "Bob: no active orders" "Charlie: has active orders"

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

  • метод with,
    который загружает связанные модели
  • метод withCount,
    который добавляет подсчёт связанных записей
  • метод withSum,
    который добавляет сумму значений из связанных записей
  • метод whereHas,
    который фильтрует записи по наличию связанных моделей
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить