Метод orWhere
Метод orWhere применяется к запросу Eloquent
или Query Builder и добавляет условие выборки через
логический оператор ИЛИ. Первым параметром передаётся
имя колонки, вторым - оператор сравнения, третьим -
значение. Если оператор не указан, используется
равенство. Метод позволяет создавать гибкие условия
поиска, когда записи должны соответствовать хотя бы
одному из условий.
Синтаксис
<?php
Model::orWhere($column, $operator, $value);
?>
Пример с одним условием ИЛИ
Давайте отфильтруем статьи, у которых поле 'status'
равно 'draft' или 'pending':
<?php
use AppModelsArticle;
$articles = Article::where('status', 'draft')
->orWhere('status', 'pending')
->get();
foreach ($articles as $article) {
echo $article->title;
}
?>
Результат выполнения кода:
"article 1"
"article 2"
"article 3"
Пример с разными операторами
Давайте отфильтруем статьи, у которых 'id' меньше
10 или поле 'views' больше 1000:
<?php
use AppModelsArticle;
$articles = Article::where('id', '<', 10)
->orWhere('views', '>', 1000)
->get();
foreach ($articles as $article) {
echo $article->title;
}
?>
Результат выполнения кода:
"article 1"
"article 2"
"article 5"
Пример с группировкой условий
Давайте отфильтруем статьи, у которых 'category_id'
равно 1 или ('status' равно 'published'
и 'views' больше 500):
<?php
use AppModelsArticle;
$articles = Article::where('category_id', 1)
->orWhere(function ($query) {
$query->where('status', 'published')
->where('views', '>', 500);
})
->get();
foreach ($articles as $article) {
echo $article->title;
}
?>
Результат выполнения кода:
"article 1"
"article 3"
"article 4"
Пример с проверкой на NULL
Давайте отфильтруем статьи, у которых поле 'deleted_at'
равно null или поле 'status' равно 'archived':
<?php
use AppModelsArticle;
$articles = Article::whereNull('deleted_at')
->orWhere('status', 'archived')
->get();
foreach ($articles as $article) {
echo $article->title;
}
?>
Результат выполнения кода:
"article 1"
"article 2"
"article 4"