Как записывать запрос в Laravel
Хотите распечатать запрос в Laravel? Или, другими словами, вы хотите регистрировать запросы в Laravel? На оба вопроса есть несколько разные ответы. Для печати запроса вы можете просто распечатать последний выполненный запрос и отобразить его в браузере. Но я бы порекомендовал вам регистрировать запрос в Laravel. При этом все ваши запросы будут сохранены в файле журнала, и вы сможете просмотреть его в любое время.
В этой статье я покажу вам оба варианта, которые помогают пользователю просматривать запросы в своем приложении Laravel.
Когда вы разрабатываете приложение Laravel, иногда вы можете столкнуться с ситуацией, когда вам нужно проверить, верен ли письменный запрос или нет. Это происходит по нескольким причинам – возможно, пользователи не получают ожидаемого результата, вы получаете медленный ответ от сервера базы данных, или вы не получаете никакого вывода, поскольку что-то не так с вашим запросом и т.д. Во всех этих сценариях, если вы регистрируете запрос, это поможет отладить проблему.
Как распечатать запрос в Laravel?
Печать последнего выполненного запроса – это однократный процесс. Возможно, вам потребуется просто распечатать запрос в браузере. Он нигде не хранит запрос. Ниже приведен простой пример печати вашего запроса в Laravel.
DB::enableQueryLog();
$arr_user = DB::table('users')->select('name', 'email as user_email')->get();
dd(DB::getQueryLog());
Здесь я использовал два утверждения DB::enableQueryLog()
и dd(DB::getQueryLog())
. Первый оператор включает ведение журнала запросов, а второй оператор фактически печатает этот журнал в браузере. Этот метод отладки также работает с Laravel Eloquent.
Этот метод можно использовать, если они не хотят регистрировать запросы. Но, как было сказано ранее, это не совсем удобный способ. Потому что, если вы будете следовать этой техникой, то вам нужно повторить эти два утверждения DB::enableQueryLog()
и dd(DB::getQueryLog())
для каждого запроса.
Лучше всего записывать все запросы в файл журнала.
Запрос журнала в Laravel
Я рекомендую технику регистрации запросов в Laravel. Это более простой и удобный способ для разработчиков. Вам не нужно идти к месту каждого запроса и писать код для логирования.
Вместо этого вам нужно только отредактировать, AppServiceProvider.php
и все готово.
Откройте app/Providers/AppServiceProvider.php
файл и добавьте 2 фасада для «Файл» и «БД» следующим образом.
use IlluminateSupportFacadesFile;
use IlluminateSupportFacadesDB;
Затем в boot()
методе напишите приведенный ниже код, который будет регистрировать все ваши запросы Laravel в фоновом режиме.
public function boot()
{
if(env('APP_DEBUG')) {
DB::listen(function($query) {
File::append(
storage_path('/logs/query.log'),
$query->sql. ' ['. implode(', ', $query->bindings). ']'. PHP_EOL
);
});
}
}
Теперь всякий раз, когда выполняется запрос, он автоматически регистрируется в storage/logs/query.log
файле. Пользователь может напрямую просматривать свои запросы в этом query.log
файле.
В Laravel доступен еще один способ регистрации запросов. Таким образом, ваши журналы запросов сохраняются внутри storage/logs/laravel.log
файла. Для этого вам необходимо поместить в свой routes/web.php
файл приведенный ниже код .
DB::listen(function($sql) {
Log::info($sql->sql);
Log::info($sql->bindings);
Log::info($sql->time);
});
Это оно! Теперь вам нужно использовать любой из вышеперечисленных методов для регистрации запросов. Вам не нужно использовать оба метода одновременно.
Все дело в регистрации запросов в Laravel. Надеюсь, эта статья будет полезна вашему приложению. Пожалуйста, поделитесь своими мыслями и предложениями в разделе комментариев ниже.
Статьи по Теме
- Как создать пользовательскую страницу ошибки 404 в Laravel
- Как интегрировать новостную рассылку MailChimp в приложение Laravel