Хостинг-провайдер Timeweb – VDS, VPS, регистрация доменов.

Laravel 5 – пример построения запроса Query Builder с использованием whereIn и WhereNotIn

В этом посте я хотел бы поделиться с вами, опытом использования подзапросов с использованием whereIn и whereNotIn.
 
Иногда нам может потребоваться создать запрос на выборку, с использование SQL оператора WHERE с условиями IN или NOT IN. Возможно, что вы знаете как написать запрос, используя MySQL, но испытываете затруднение в построении запроса с использованием Laravel Query Builder. В этом примере мы узнаем, как преобразовать запрос MySQL в Laravel Query Builder.

Сначала мы мформируем запрос на SQL, преобразуем его в Laravel Query Builder.
 
В этом примере у меня есть две таблицы:
  1. users
  2. users_invited


 
WHERE IN 
В первом запросе нам требуется выбрать пользователей, которые присутствуют только в таблице users_invited. Сделать это мы можем, используя приведенный ниже SQL-запрос:
SELECT * FROM `users` WHERE `id` IN (SELECT `user_id` FROM `users_invited`)

Этот же запрос с использованием Laravel Query Builder:
$users = DB::table("users")->select('*')
            ->whereIn('id',function($query){
               $query->select('user_id')->from('invite_users');
            })
            ->get();

 
WHERE NOT IN
Во втором запросе нам необходимо выбрать пользователей, которых нет в таблице users_invited.
SQL-запрос:
SELECT * FROM `users` WHERE `id` NOT IN ( SELECT `user_id` FROM `invite_users` )
Laravel Query Builder:
$users = DB::table("users")->select('*')
            ->whereNOTIn('id', function($query) {
                $query->select('user_id')->from('invite_users');
            })
            ->get();

Перевод статьи «Laravel 5 — whereIn and whereNotIn with subquery example using query builder».
 

Нет комментариев