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

←→
↑