О web-разработке
и даже немного больше...

Как просмотреть SQL запрос в Eloquent Laravel?

Laravel предоставляет довольно удобную реализацию ActiveRecord для работой с базой данных. В большинстве случаев при работе с Laravel редко приходится писать сами SQL-запросы, т.к. взаимодействие происходит посредством встроенных методов. Однако, если есть необходимость, мы можем вывести строку SQL запроса. В Laravel 8 существует несколько методов для вывода строки запроса, давайте рассмотрим их.

Eloquent метод для вывода SQL запроса

Существует в арсенале Laravel специальный метод, именуемый toSql(). Суть работы этого метода проста, вместо выполнения запроса, вернётся строка в виде SQL запроса. Таким образом, можно просмотреть то, что мы «скармливаем» базе данных.

echo Article::where("title","Test")
						->orderBy("id",'DESC')
						->limit(5)
						->toSql();

Результатом работы данного метода будет строка SQL запроса:

select * from `articles` where `title` = Test order by `id` desc limit 5

Это первый способ, есть другой способ – это просмотр журнала отладки запросов в Laravel.

Журнал отладки запросов Laravel

В Laravel есть встроенный механизм отладки запросов, который позволяет вывести сам SQL запрос, а так же просмотреть их параметры. Правда здесь уже непосредственно выполняется запрос, и мы имеет возможность проанализировать его.

\DB::enableQueryLog();

Article::where("title","Test")->orderBy("id",'DESC')->limit(5)->get();

dd(\DB::getQueryLog());

Данные будут показаны в таком виде:

array:1 [▼
  0 => array:3 [▼
    "query" => "select * from `articles` where `title` = Test order by `id` desc limit 5"
    "bindings" => array:1 [▼
      0 => "Test"
    ]
    "time" => 21.54
  ]
]

Во втором примере, перед самим запросом, мы включили журнал с помощью метода DB::enableQueryLog(). После выполнения запроса, с помощью метода DB::getQueryLog() вывели все запросы, которые выполнялись между этими методами. Чем уникален второй способ, тут удобно анализировать выполнение сразу несколько запросов.

Опубликован: 09.01.2023 г.

См. также:

Как объявить переменную в шаблоне Laravel Blade?
Проверка на пустоту коллекций Eloquent в Laravel
Как получить URL текущей страницы в Laravel?
Как вывести роуты Laravel в отдельный файл?
Как получить случайные записи из БД в Laravel?
Ограничение выборки (LIMIT) данных в Laravel
Как перенести Laravel на боевой сервер?
Команды Artisan для сброса кэша в Laravel

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Комментарии
  • Загрузка...
Друзья сайта