Intereting Posts

Laravel 5.4 – Как установить режим выбора PDO?

Возможность настройки режима выборки была удалена из L5.4 и по умолчанию была установлена ​​PDO :: FETCH_OBJ.

В руководстве по обновлению указано, что вы можете переопределить это, используя прослушиватель событий:

Event::listen(StatementPrepared::class, function ($event) { $event->statement->setFetchMode(...); }); 

Я не могу в жизни понять, как это реализовать:

1) Где я должен поместить код? Должен ли я регистрировать его с помощью EventServiceProvider ?
2) Когда срабатывает событие StatementPrepared ? (Мне нужно изменить режим Fetch для конкретных функций репозитория, а не в глобальном масштабе).
3) автоматически ли возвращается FetchM автоматически для последующих запросов?

Вот пример моего кода:

 <?php namespace App\Repositories\Backend; use DB; use PDO; class SystemRepository { /** * Get the connection status variables. * * @return array */ public function getConnectionStatus() { DB::connection('backend')->setFetchMode(PDO::FETCH_ASSOC); $result = DB::connection('backend') ->select(DB::raw(" SHOW STATUS WHERE Variable_name = 'Max_used_connections' OR Variable_name = 'Max_used_connections_time' OR Variable_name = 'Threads_connected' ")) ; DB::connection('backend')->setFetchMode(PDO::FETCH_CLASS); return $result; } } 

Спасибо!

Перейти к: app / Providers / EventServiceProvider.php

Добавьте это в начало файла:

 use Illuminate\Database\Events\StatementPrepared; 

В методе загрузки добавьте:

 Event::listen(StatementPrepared::class, function ($event) { $event->statement->setFetchMode(\PDO::FETCH_ASSOC); });