Метод toRawSql
Метод toRawSql применяется к построителю запросов Eloquent
или Query Builder и возвращает строку с полным SQL-запросом,
где все плейсхолдеры заменены на реальные значения.
В отличие от метода toSql, который возвращает запрос
с параметрами в виде знаков вопроса, toRawSql подставляет
конкретные значения, что удобно для отладки и логирования.
Метод не принимает никаких параметров и возвращает строку.
Синтаксис
<?php
$query = Model::where('column', 'value');
$rawSql = $query->toRawSql();
?>
Пример
Давайте получим сырой SQL-запрос для выборки статей со статусом 'published':
<?php
use AppModelsArticle;
$query = Article::where('status', 'published');
$res = $query->toRawSql();
echo $res;
?>
Результат выполнения кода:
"select * from `articles` where `status` = 'published'"
Пример
Давайте получим сырой SQL-запрос для выборки статей
с id больше 10:
<?php
use AppModelsArticle;
$query = Article::where('id', '>', 10);
$res = $query->toRawSql();
echo $res;
?>
Результат выполнения кода:
"select * from `articles` where `id` > 10"
Пример
Давайте получим сырой SQL-запрос для сложного запроса с несколькими условиями и сортировкой:
<?php
use AppModelsArticle;
$query = Article::where('status', 'published')
->where('views', '>', 100)
->orderBy('created_at', 'desc')
->limit(5);
$res = $query->toRawSql();
echo $res;
?>
Результат выполнения кода:
"select * from `articles` where `status` = 'published' and `views` > 100 order by `created_at` desc limit 5"
Пример
Давайте получим сырой SQL-запрос с использованием
метода whereIn:
<?php
use AppModelsArticle;
$query = Article::whereIn('category_id', [1, 2, 3]);
$res = $query->toRawSql();
echo $res;
?>
Результат выполнения кода:
"select * from `articles` where `category_id` in (1, 2, 3)"