Практически любой запрос в 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();
?>