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

Метод whereNotExists

Метод whereNotExists применяется к запросу Eloquent или Query Builder и возвращает тот же запрос, дополненный условием NOT EXISTS. В качестве единственного параметра передаётся замыкание, которое принимает экземпляр построителя запросов для подзапроса. Этот метод полезен для выборки записей, у которых нет связанных записей в другой таблице.

Синтаксис

<?php Model::whereNotExists(Closure $callback); ?>

Пример

Давайте выберем всех пользователей, у которых нет ни одной статьи. Подзапрос будет проверять наличие записей в таблице posts, связанных с текущим пользователем по полю user_id:

<?php use App\Models\User; $users = User::whereNotExists(function ($query) { $query->select('id') ->from('posts') ->whereColumn('posts.user_id', 'users.id'); })->get(); foreach ($users as $user) { echo "User ID: " . $user->id . ", Name: " . $user->name; } ?>

Пример

Давайте найдём категории, к которым не привязано ни одного товара. Используем подзапрос с условием связи по полю category_id:

<?php use App\Models\Category; $categories = Category::whereNotExists(function ($query) { $query->select('id') ->from('products') ->whereColumn('products.category_id', 'categories.id'); })->get(); foreach ($categories as $category) { echo $category->name; } ?>

Пример

Выберем заказы, у которых нет ни одного товара в корзине. В подзапросе используем дополнительное условие для проверки статуса товаров:

<?php use App\Models\Order; $orders = Order::whereNotExists(function ($query) { $query->select('id') ->from('order_items') ->whereColumn('order_items.order_id', 'orders.id') ->where('order_items.status', 'active'); })->get(); foreach ($orders as $order) { echo "Order ID: " . $order->id; } ?>

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

  • метод whereExists,
    который проверяет наличие записей в подзапросе
  • метод whereNotIn,
    который исключает записи по списку значений
  • метод whereNull,
    который выбирает записи с пустым полем
  • метод get,
    который выполняет запрос и возвращает коллекцию
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить