WEB и WordPress новости, темы, плагины. Здесь мы делимся советами и лучшими решениями для сайтов.

Как записывать запрос в Laravel

252

Хотите распечатать запрос в 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. Надеюсь, эта статья будет полезна вашему приложению. Пожалуйста, поделитесь своими мыслями и предложениями в разделе комментариев ниже.

Статьи по Теме

Источник записи: artisansweb.net

Этот веб-сайт использует файлы cookie для улучшения вашего опыта. Мы предполагаем, что вы согласны с этим, но вы можете отказаться, если хотите. Принимаю Подробнее