Освоение условных предложений Where в запросах Laravel: подробное руководство

Метод 1. Использование метода whereс замыканием.
Построитель запросов Laravel предоставляет удобный метод where, который допускает замыкание. Внутри этого замыкания вы можете определить условия, используя методы построителя запросов. Вот пример:

$users = DB::table('users')
    ->where(function ($query) use ($condition) {
        if ($condition) {
            $query->where('age', '>', 18);
        } else {
            $query->where('age', '<', 18);
        }
    })
    ->get();

Метод 2: Условные предложения с помощью метода when:
Метод whenпозволяет условно применить обратный вызов к запросу на основе заданного условия. Этот метод обеспечивает более краткий способ добавления условных предложений. Вот пример:

$condition ? $operator = '>' : $operator = '<';
$users = DB::table('users')
    ->when($condition, function ($query) use ($operator) {
        return $query->where('age', $operator, 18);
    })
    ->get();

Метод 3. Динамические имена столбцов с помощью метода orWhere.
Иногда вам может потребоваться добавить условное предложение с динамическим именем столбца. В таких случаях вы можете использовать метод orWhere. Вот пример:

$column = $condition ? 'age' : 'salary';
$users = DB::table('users')
    ->where('name', 'John')
    ->orWhere($column, '>', 5000)
    ->get();

Метод 4: условные предложения с Eloquent ORM:
Если вы используете Eloquent, встроенный ORM Laravel, вы можете использовать его выразительный синтаксис для условных предложений. Вот пример:

$users = User::where('name', 'John');
if ($condition) {
    $users->where('age', '>', 18);
} else {
    $users->where('age', '<', 18);
}
$users = $users->get();

Добавление условных предложенийwhere в запросы Laravel дает вам возможность получать определенные данные на основе различных условий. В этой статье мы рассмотрели несколько методов, в том числе использование замыканий, метода when, динамических имен столбцов с помощью orWhereи условных предложений с помощью Eloquent ORM. Применяя эти методы, вы сможете писать более универсальные и лаконичные запросы в своих приложениях Laravel.