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

Получите юзеров, у которых зарплата равна 500 либо возраст от 20 до 30.

Получите юзеров, у которых возраст от 20 до 30, либо зарплата от 400 до 800.