Условия выборки из БД в Laravel

В прошлой статье "Выборки из БД в Laravel" были разобраны простейшие примеры выборок из базы данных. Эта тема будет продолжена, в статье обсудим дополнительные методы для условий, группировок и сортировок.

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

Дополнительное условие

Метод "whereBetween" позволяет получить выборку в указанном интервале:
<?php
   $users = DB::table('users')->whereBetween('id', [35, 87])->get();
?>
Аналогично метод "whereNotBetween" позволяет получить данные вне интервала:
<?php
   $users = DB::table('users')->whereNotBetween('id', [35, 87])->get();
?>
Если нужно получить точное соответствие одному из указанных значений, то можно использовать метод "whereIn":
<?php
   $users = DB::table('users')->whereIn('id', [1, 7, 15])->get();
?>
Если же необходимо исключить из диапазона именно эти данные, то используйте метод с "Not" - "whereNotIn":
<?php
   $users = DB::table('users')->whereNotIn('id', [1, 7, 15])->get();
?>
Для проверки значения на равенство и неравенство "Null" используются соответственно методы "whereNull" и "whereNotNull":
<?php
   $users = DB::table('users')->whereNull('last_login')->get();

   $users = DB::table('users')->whereNotNull('last_login')->get();
?>
Если требуется создание выборки по условию даты или времени, то можно использовать один из методов для сравнения значений дат:
<?php
// кто зарегистрировался 2020-12-31
   $users = DB::table('users')->whereDate('last_login', '2020-12-31')->get();

// кто зарегистрировался в декабре
   $users = DB::table('users')->whereMonth('last_login', '12')->get();

// кто зарегистрировался 31 числа любого месяца
   $users = DB::table('users')->whereDay('last_login', '31')->get();

// кто зарегистрировался в 2020 году
   $users = DB::table('users')->whereYear('last_login', '2020')->get();
?>

Динамические условия

Есть набор методов, которые позволяют делать дополнительные "динамические" условия для более гибкого построения операторов. По их названию можно догадаться как об их функции, так и об аргументах:
<?php
// получим записи пользователя с id = 1
   $admin = DB::table('users')->whereId(1)->first();

// получим записи пользователя с id = 2 и мэйлом mouse@mousedc.ru
   $mouse = DB::table('users')->whereIdAndEmail(2, 'mouse@mousedc.ru')->first();

// получим записи пользователя с именем Mouse и возрастом в 18 лет
   $mouse = DB::table('users')->whereNameOrAge('Mouse', 18)->first();
?>

Сравнение колонок

Иногда появляется необходимость сравнить значения нескольких колонок внутри запроса. Делается это с помощью метода "whereColumn":
<?php
// выбираем тех, у кого first_name равно last_name
   $users = DB::table('users')->whereColumn('first_name', '=', 'last_name')->first();

// выбираем тех, у кого first_name равно last_name и updated_at больше created_at
   $users = DB::table('users')->whereColumn(
      ['first_name', '=', 'last_name'],
      ['updated_at', '>', 'created_at'],
   )->first();
?>
MouseDC.ru - хостинг, виртуальный хостинг, покупка доменов, проверка доменов, WHOIS, курсы создания сайтов, вебинары по созданию, курсы разработки сайтов, доработка сайтов, сопровождение сайтов, разработка сайтов, техподдержка сайтов
Cмотрите другие статьи:
Была ли статья полезной?
Была ли эта статья полезна? Есть вопрос?
хостинг для сайтов
Закажите недорогой хостинг Заказать

всего от 290 руб