Сложные условия при выборке через QB в Laravel
При выборке можно конструировать условия
любой сложности. Для этого в метод orWhere
нужно параметром передать анонимную функцию,
в которой будут писаться сгрупированные команды:
<?php
$posts = DB::table('posts')
->where('id', '=', 3)
->orWhere(function($query) {
// тут пишем сгрупированные команды
})
->get();
?>
Внутри функции будет доступен объект $query,
к которому можно применять методы построителя
запроса.
<?php
$posts = DB::table('posts')
->where('id', '=', 3)
->orWhere(function($query) {
$query
->where('likes', '>', 10)
->where('likes', '<', 50);
})
->get();
?>
В результате к базе выполнится следующий запрос:
SELECT * FROM posts WHERE id = 3 OR (likes > 10 AND likes > 50)
Получите юзеров, у которых
зарплата равна 500 либо
возраст от 20 до 30.
Получите юзеров, у которых
возраст от 20 до 30, либо
зарплата от 400 до 800.