Метод whereRaw
Метод whereRaw применяется к запросу Eloquent
или Query Builder и возвращает тот же запрос,
дополненный сырым SQL-условием. Первым параметром
передаётся строка с SQL-выражением, вторым - массив
связываемых значений для защиты от SQL-инъекций.
Этот метод полезен, когда необходимо использовать
сложные условия, которые невозможно выразить
стандартными методами.
Синтаксис
<?php
Model::whereRaw($sql, $bindings);
?>
Пример
Давайте выберем статьи, у которых количество просмотров больше чем лайков:
<?php
use AppModelsArticle;
$articles = Article::whereRaw('views > likes')->get();
foreach ($articles as $article) {
echo $article->title;
}
?>
Результат выполнения кода:
["article 1", "article 3", "article 5"]
Пример
Давайте отфильтруем статьи, у которых текст содержит определённое слово, используя SQL-функцию:
<?php
use AppModelsArticle;
$articles = Article::whereRaw('LOWER(text) LIKE ?', ['%laravel%'])->get();
foreach ($articles as $article) {
echo $article->title;
}
?>
Результат выполнения кода:
["article 2", "article 4"]
Пример
Давайте выберем записи, созданные за последние 7 дней, используя SQL-функцию DATE_SUB:
<?php
use AppModelsArticle;
$articles = Article::whereRaw('created_at > DATE_SUB(NOW(), INTERVAL 7 DAY)')->get();
foreach ($articles as $article) {
echo $article->title;
}
?>
Результат выполнения кода:
["article 1", "article 2", "article 3"]
Пример
Давайте выполним запрос с несколькими связываемыми параметрами для безопасной фильтрации:
<?php
use AppModelsArticle;
$minViews = 10;
$maxViews = 50;
$articles = Article::whereRaw('views BETWEEN ? AND ?', [$minViews, $maxViews])->get();
foreach ($articles as $article) {
echo $article->title;
}
?>
Результат выполнения кода:
["article 3", "article 4"]