我正在尝试将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:我知道前两个选项不适用于最新版本的口才,但是我不得不不加思索地尝试一下。我对如何使第三个选项起作用的建议持开放态度。通常,第三个类应该从看起来像这样的Event::listen
开始,但是我不知道Events
类是从哪里来的。我还需要某种事件监听器吗?
PPS:我不是在使用Laravel,而是在使用Composer在PHP中使用illuminate的口才。
答案 0 :(得分:1)
安装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);
});