hyperf3.0 数据库查询将结果转为数组格式 通过监听器来监

2023-06-24  本文已影响0人  geeooooz

要将数据库查询的结果转换为数组格式,可以通过监听器来监听 Hyperf\Database\Events\StatementPrepared 事件,并在事件处理程序中进行转换。

首先,创建一个监听器类,实现 Hyperf\Event\Contract\ListenerInterface 接口,并在 process 方法中进行转换操作。例如,创建一个名为 QueryResultToArrayListener 的监听器类:

<?php

namespace App\Listener;

use Hyperf\Database\Events\StatementPrepared;
use Hyperf\Event\Annotation\Listener;
use Hyperf\Event\Contract\ListenerInterface;

/**
 * @Listener
 */
class QueryResultToArrayListener implements ListenerInterface
{
    public function listen(): array
    {
        return [
            StatementPrepared::class,
        ];
    }

    public function process(object $event): void
    {
        if ($event instanceof StatementPrepared) {
            $event->statement->setFetchMode(\PDO::FETCH_ASSOC);
        }
    }
}

然后,在 config/autoload/listeners.php 配置文件中注册该监听器:

<?php

use App\Listener\QueryResultToArrayListener;

return [
    \App\Listener\QueryResultToArrayListener::class,
];

这样,当每次执行数据库查询时,StatementPrepared 事件都会被触发,从而将查询结果转换为数组格式。

上一篇 下一篇

猜你喜欢

热点阅读