Отображение sql-запросов к БД в Laravel

Добавлено: 05/09/2016 00:30 |  Обновлено: 05/09/2016 00:35 |  Добавил: nick |  Просмотры: 7911 Комментарии: 0
Вводная часть
Совет о том, как отобразить все sql-запросы к БД, совершаемые вашим приложением. Совет подходит для стадии разработки. Пример работает в пятой версии фреймворка.
Если вам необходимо видеть все sql-запросы, выполняемые к БД на всех страницах вашего сайта можно воспользоваться следующей конструкцией:
DB::listen(function($query) {
    var_dump($query->sql, $query->bindings);
});
Этот код можно разместить в файле routes.php, после чего все запросы к БД (на всех страницах) будут отображаться вверху окна браузера. Например, при получении следующей модели:
User::where('id', 1)->first();
Результат работы метода DB::listen() будет таким:
string(44) "select * from `users` where `id` = ? limit 1" array(1) { [0]=> int(1) }
Если не выводить $query->bindings, то получим следующее:
string(44) "select * from `users` where `id` = ? limit 1"
То есть мы не выводим массив $bindings:
protected $bindings = [
    'select' => [],
    'join'   => [],
    'where'  => [],
    'having' => [],
    'order'  => [],
    'union'  => [],
];
Также, к выводу самого запроса можно добавить вывод времени, добавив $query->time.

Оставьте свой комментарий

Комментариев нет