setFetchMode игнорируется - PullRequest
       6

setFetchMode игнорируется

0 голосов
/ 20 марта 2019

Я пытаюсь инициализировать eloquent с setFetchMode как PDO::FETCH_ASSOC.

Я перепробовал все возможное, но это не работает.

Что я пробовал до сих пор:

Чтобы добавить его, используя addConnection

$capsule = new Illuminate\Database\Capsule\Manager;

$capsule->addConnection([
    ...
    'fetch' => PDO::FETCH_ASSOC
]);

Используя setFetchMode

$capsule->setFetchMode(PDO::FETCH_ASSOC);

Используя события:

$t = new Illuminate\Events\Dispatcher;
$t->listen(Illuminate\Database\Events\StatementPrepared::class, function ($event) {
    $event->statement->setFetchMode(PDO::FETCH_ASSOC);
});

Но нетиз этих работ.Есть идеи, как заставить PDO::FETCH_ASSOC работать?

PS: я знаю, что первые две опции не работают с последней версией eloquent, но я должен был попробовать это без всяких проблем.Я открыт для предложений о том, как заставить работать третий вариант.Обычно третий должен начинаться с того, чтобы выглядеть так: Event::listen, но я не знаю, откуда взялся Events класс.Также мне нужен какой-нибудь прослушиватель событий?

PPS: я не использую Laravel, я использую красноречивый светосвет с PHP с помощью composer.

1 Ответ

1 голос
/ 26 марта 2019

Установите пакет illuminate/events и используйте это:

use Illuminate\Container\Container;
use Illuminate\Database\Capsule\Manager;
use Illuminate\Database\Events\StatementPrepared;
use Illuminate\Events\Dispatcher;

$capsule = new Manager;
$capsule->addConnection([...]);

$dispatcher = new Dispatcher(new Container);
$capsule->setEventDispatcher($dispatcher);

$dispatcher->listen(StatementPrepared::class, function ($event) {
    $event->statement->setFetchMode(PDO::FETCH_ASSOC);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...