MyTetra Share
Делитесь знаниями!
Как посмотреть сгенерированный SQL-запрос для Laravel Eloquent и DB
Время создания: 07.05.2019 16:18
Автор: xintrea
Текстовые метки: laravel, eloquent, sql, запрос, исходник, сгенерированный, построитель, результат
Раздел: Компьютер - Программирование - Язык PHP - Laravel
Запись: xintrea/mytetra_syncro/master/base/15572351098uwfqnd18q/text.html на raw.github.com

Чтобы быстро посмотреть, какой получается SQL-запрос, генерируемый классами Eloquent или DB, можно воспользоваться следующим методом.


Нужно "окружить" сторку с SQL-запросом следующим кодом:



// Перед получением запроса нужзно включить логирование SQL-запросов

\DB::connection()->enableQueryLog();

// Сложный SQL-запрос

$article=Article::where('is_use', false)->whereDate( 'created_at', '<', Carbon::now()->subHours(2) )->get();

// Лог со сконструированными SQL-запросами

$queries = \DB::getQueryLog();


// Запросы сохраняются в лог-файл

info( $queries );



По стандарту, лог-файл находится здесь:



/storage/logs/laravel.log



Вывод будет примерно таким:


[


{"query":"select * from `articles` where `is_use` = ? and date(`created_at`) < ?","bindings":[false,{"date":"2019-05-07 14:24:26.280956","timezone_type":3,"timezone":"Europe\/Moscow"}],"time":4.15},


{"query":"insert into `articles` (`title`, `text`, `updated_at`, `created_at`) values (?, ?, ?, ?)","bindings":["","","2019-05-07 16:24:26","2019-05-07 16:24:26"],"time":19.01}


]

Видно, что это не "чистые" SQL-запросы, а запросы с плейсхолдерами. Но подставить биндинги труда не представляет.


Если же нужно нормально отлаживаться, лучше всего установить в приложение како-либо Debug Toolbar.



Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования