Метод toSql
Метод toSql применяется к запросу Eloquent
или Query Builder и возвращает строку SQL-запроса
с плейсхолдерами вместо значений. Это полезно для
отладки и анализа формируемых запросов. Метод не
выполняет запрос, а только показывает его структуру.
Синтаксис
<?php
Model::where($column, $operator, $value)->toSql();
?>
Пример
Давайте получим SQL-запрос для выборки статей с фильтрацией по статусу:
<?php
use AppModelsArticle;
$sql = Article::where('status', 'published')->toSql();
echo $sql;
?>
Результат выполнения кода:
"select * from articles where status = ?"
Пример
Давайте получим SQL-запрос для выборки статей с несколькими условиями:
<?php
use AppModelsArticle;
$sql = Article::where('user_id', 1)
->where('status', 'published')
->orderBy('created_at', 'desc')
->limit(10)
->toSql();
echo $sql;
?>
Результат выполнения кода:
"select * from articles where user_id = ? and status = ? order by created_at desc limit 10"
Пример
Давайте получим SQL-запрос с использованием соединения таблиц:
<?php
use AppModelsArticle;
use IlluminateSupportFacadesDB;
$sql = Article::join('users', 'articles.user_id', '=', 'users.id')
->select('articles.*', 'users.name')
->where('articles.status', 'published')
->toSql();
echo $sql;
?>
Результат выполнения кода:
"select articles.*, users.name from articles inner join users on articles.user_id = users.id where articles.status = ?"