При выборке можно конструировать условия
любой сложности. Для этого в метод 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 > 20)
Получите юзеров, у которых
зарплата равна 500
либо
возраст от 20
до 30
.
Получите юзеров, у которых
возраст от 20
до 30
, либо
зарплата от 400
до 800
.