Демистификация построителя запросов «не в» в Laravel: подробное руководство

В Laravel построитель запросов предоставляет удобный и интуитивно понятный способ взаимодействия с базами данных. Одной из часто используемых функций является предложение «не в», которое позволяет исключить определенные значения из результата запроса. В этой статье мы рассмотрим различные методы использования предложения «не в» в построителе запросов Laravel, а также приведем примеры кода.

Метод 1: использование методаwhereNotIn

Самый простой способ применить условие «не в» — использовать метод whereNotIn. Он принимает два аргумента: имя столбца и массив значений, которые необходимо исключить. Вот пример:

$excludedValues = [1, 2, 3];
$users = DB::table('users')
            ->whereNotIn('id', $excludedValues)
            ->get();

Этот запрос получит всех пользователей, чьи значения столбца «id» не находятся в массиве $excludedValues.

Метод 2: подзапрос с «whereNotIn»

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

$excludedIds = DB::table('excluded_users')
                ->pluck('user_id');
$users = DB::table('users')
            ->whereNotIn('id', $excludedIds)
            ->get();

В этом примере мы сначала извлекаем исключенные идентификаторы пользователей из таблицы excluded_usersс помощью метода pluck. Затем мы используем whereNotInс полученными идентификаторами, чтобы исключить этих пользователей из результата.

Метод 3: необработанные выражения с «whereNotIn»

Если вам нужен больший контроль над оператором SQL, вы можете использовать необработанные выражения с методом whereNotIn. Это позволяет вам писать собственные условия непосредственно в SQL. Вот пример:

$excludedValues = [1, 2, 3];
$users = DB::table('users')
            ->whereNotIn('id', function ($query) use ($excludedValues) {
                $query->select('user_id')
                      ->from('excluded_users')
                      ->whereIn('status', $excludedValues);
            })
            ->get();

В этом примере мы используем подзапрос для исключения пользователей на основе их столбцов «id» и «статус» из таблицы excluded_users.

В этой статье мы рассмотрели различные методы использования предложения «не в» в построителе запросов Laravel. Мы рассмотрели использование метода whereNotIn, подзапросы с помощью whereNotInи использование необработанных выражений. Эти методы обеспечивают гибкость и контроль при исключении определенных значений из результатов запроса. Освоив эти методы, вы сможете расширить возможности запросов к базе данных ваших приложений Laravel.

Не забудьте поэкспериментировать с этими методами в своих проектах Laravel, чтобы полностью осознать их мощь. Приятного кодирования!