Сложные условия при выборке через 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 > 20)