Условие where
// Условие с одним значением
->where($column, $value)
// Условие с оператором
->where($column, $operator, $value)
Описание: Метод where
используется для фильтрации данных на основе определенных условий. Вы можете указать столбец, оператор сравнения и значение.
Условие orWhere
$query->where(function ($query) {
$query->where('gender', 'Male')
->where('age', '>=', 18);
})
->orWhere(function($query) {
$query->where('gender', 'Female')
->where('age', '>=', 65);
});
Описание: Метод orWhere
добавляет альтернативное условие в запрос. Полезен для создания сложных запросов с логикой "ИЛИ".
Скоуп orWhere
$users = App\User::popular()->orWhere->active()->get();
Описание: Использование глобальных или локальных скоупов вместе с orWhere
позволяет строить запросы с переиспользуемой логикой.
Цепочка условий orWhere
$q->orWhere(['b' => 2, 'c' => 3]);
Описание: Цепочка условий orWhere
позволяет добавлять несколько альтернативных условий с массивом ключ-значение.
Кастомные условия
->where(function ($query) use ($activated) {
$query->where('activated', '=', $activated);
})->get();
->where(function($query) {
if ($query->isProduct()) $query->has('product');
else $query->has('subscription');
});
Описание: Метод where
поддерживает кастомные условия с использованием замыканий, что позволяет динамически управлять логикой запросов.
Условие whereNull
и whereNotNull
// Условие для проверки на NULL
->whereNull($column)
// Условие для проверки на НЕ NULL
->whereNotNull($column)
Описание: Эти методы позволяют проверять значения в столбцах на NULL
или его отсутствие.
Условие whereBetween
и whereNotBetween
// Проверка на диапазон
->whereBetween($column, [100,200])
// Исключение из диапазона
->whereNotBetween($column, [100,200])
Описание: Методы whereBetween
и whereNotBetween
используются для фильтрации данных на основе диапазонов значений.
Условие whereIn
и whereNotIn
// Проверка на соответствие массиву значений
->whereIn($column, [1,2])
// Исключение значений из массива
->whereNotIn($column, [1,2])
Описание: Методы для фильтрации данных, которые соответствуют (или не соответствуют) значениям из указанного массива.
Условие withWhereHas
->withwherehas('posts')
Описание: Метод withWhereHas
объединяет функциональность with
и has
, позволяя фильтровать связанные модели и загружать их.
Условие when
->when($status, $callback, $default);
->whenEmpty($status, $callback, $default);
->whenNotEmpty($status, $callback, $default);
// Пример с if
->when(true, function ($q) {
return $q->where('key', 'val');
});
// Пример с if/else
->when(condition, function($c){
return $c->push(4);
}, function ($c){
return $c->push(3);
});
Описание: Метод when
используется для добавления условий в зависимости от выполнения определенного условия.
Условие unless
->unless($status, $callback, $default);
->unlessEmpty($status, $callback, $default);
->unlessNotEmpty($status, $callback, $default);
Описание: Метод unless
работает как противоположность when
, добавляя условие только если оно не выполнено.
Условие doesntHave
$posts = App\Post::doesntHave('comments')->get();
$posts = App\Post::whereDoesntHave('comments', function (Builder $query) {
$query->where('content', 'foo');
})->get();
Product::doesntHave('categories')
->orDoesntHave('countries')
->get();
Product::whereDoesntHave('categories', function($q) {
$query->where('content', 'foo');
})
->orWhereDoesntHave('countries', function($q) {
$query->where('content', 'foo');
})->get();
Описание: Метод doesntHave
используется для фильтрации моделей, у которых нет определенных связей.
Коллекции: проверка на объект
collect([new User, new Post])->whereInstanceOf(User::class);
Описание: Метод whereInstanceOf
позволяет фильтровать коллекции, оставляя только элементы определенного класса.
Laravel предоставляет гибкие методы для построения запросов, такие как where
, orWhere
, whereIn
, when
и другие. Они позволяют создавать сложные условия для выборки данных, включая работу с NULL, массивами, диапазонами и кастомными замыканиями.