setFetchMode被忽略

时间:2019-03-20 09:14:02

标签: php 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:我知道前两个选项不适用于最新版本的口才,但是我不得不不加思索地尝试一下。我对如何使第三个选项起作用的建议持开放态度。通常,第三个类应该从看起来像这样的Event::listen开始,但是我不知道Events类是从哪里来的。我还需要某种事件监听器吗?

PPS:我不是在使用Laravel,而是在使用Composer在PHP中使用illuminate的口才。

1 个答案:

答案 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);
});