В Laravel вы можете организовать опциональное условие в запросе, используя метод when
или метод orWhere
в запросах Eloquent.
Метод when
позволяет выполнять дополнительную логику в запросе, только если условие истинно. Вот пример использования when
:
$users = DB::table('users') ->when($request->has('is_admin'), function ($query) { return $query->where('is_admin', true); }) ->get();
В этом примере запрос выбирает всех пользователей, если от клиента получен параметр is_admin
, и только тех пользователей, которые имеют значение true
в столбце is_admin
.
Если параметр is_admin
равен false
или не передан вообще, то условие не будет применяться, и в запросе будут выбраны все записи из таблицы users
.
Метод orWhere
позволяет добавлять альтернативное условие в запрос, если предыдущие условия не выполнились. Вот пример:
$users = DB::table('users') ->where('name', 'John') ->orWhere(function ($query) { $query->where('age', '>', 30) ->where('is_admin', false); }) ->get();
В этом примере запрос выбирает пользователей с именем "John", или пользователей старше 30 лет и не являющихся администраторами.
Если в таблице есть записи пользователя с именем "John", то данные пользователи будут выбраны независимо от других альтернативных условий. Если условие для имени "John" не выполняется, тогда будут выбраны пользователи, соответствующие альтернативным условиям.
В обоих примерах условия могут быть любыми - вы можете использовать все доступные методы в классе QueryBuilder
, чтобы создать дополнительные условия, опираясь на вашу логику.
В целом, методы when
и orWhere
могут быть мощными инструментами для организации опциональных условий в запросах в Laravel, и помогают упростить код и обеспечить более чистую структуру запросов.