Часто работая со сложной логикой построения запроса необходимо посмотреть итоговый SQL запрос. Если на проекте есть веб морда, то это можно легко посмотреть используя DebugBar, но как быть если у приложения есть только api ? Есть несколько решений: например логировать весь sql запрос. В методе boot класса AppServiceProvider добавить такой код который записывает все сгенерированные запросы в файл.
----
<? \DB::listen(function ($query) { $log = ["query" => $query->sql, "duration" => $query->time]; Log::channel('mysql_info')->info(json_encode($log, JSON_UNESCAPED_UNICODE)); });
---
Но у этого методе есть большой минус. Все запросы попадают в лог. Чтобы записать или отправить в ответ только нужный sql используйте такую конструкицю:
<? DB::enableQueryLog(); App\User::query() ->where('created_at', '<', now()->subYear()) ->with('assignedApps', 'courses') ->orderBy('email', 'asc') ->limit(5) ->get(); dd(DB::getQueryLog()); print_r(DB::getQueryLog());
----
Если есть еще какие то способы рад увидеть в комментариях.
Комментариев нет:
Отправить комментарий