要將數(shù)據(jù)庫查詢的結(jié)果轉(zhuǎn)換為數(shù)組格式,可以通過監(jiān)聽器來監(jiān)聽 Hyperf\Database\Events\StatementPrepared 事件,并在事件處理程序中進(jìn)行轉(zhuǎn)換。
首先,創(chuàng)建一個監(jiān)聽器類,實現(xiàn) Hyperf\Event\Contract\ListenerInterface 接口,并在 process 方法中進(jìn)行轉(zhuǎn)換操作。例如,創(chuàng)建一個名為 QueryResultToArrayListener 的監(jiān)聽器類:
<?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 配置文件中注冊該監(jiān)聽器:
<?php
use App\Listener\QueryResultToArrayListener;
return [
\App\Listener\QueryResultToArrayListener::class,
];
這樣,當(dāng)每次執(zhí)行數(shù)據(jù)庫查詢時,StatementPrepared 事件都會被觸發(fā),從而將查詢結(jié)果轉(zhuǎn)換為數(shù)組格式。