Получить выполненные SQL-запросы в Laravel - PullRequest
0 голосов
/ 28 октября 2018

Я пытаюсь прикрепить выполненные SQL-запросы к моему запросу.К сожалению, мой массив $ logs пуст.

$logs = [];

\DB::listen(function ($query) use ($logs) {
   print_r($query->sql); // print_r here works
   $logs[] = $query;
});
print_r($logs); // here $logs is empty

Почему мой массив $ logs пуст, а внутри DB :: listen print_r () работает?Как я могу исправить это, чтобы получить мои запросы в массиве $ logs?

1 Ответ

0 голосов
/ 28 октября 2018

Проблема заключается в том, что существует разница во времени выполнения кода, выполняемого внутри метода ::listen(), и строк до и после.

Код внутри будет выполняться при отправке запроса, в то время как другой код выполняется при запуске вашего приложения .Таким образом, после привязки функции к фасаду базы данных запрос еще не выполняется, и $logs будет пустым.

Для ведения журнала

Вы можете попробоватьСлушатель БД записывает запросы в файл или просматривает этот пост: https://stackoverflow.com/a/27753889/2142071

Для добавления к запросу

Внутри метода listen используйте request()->request->add(['sql', $query->sql]); чтобы переменная sql была доступна в объекте запроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...