我将zend-db与zend-expressive结合使用。我有一个处理程序,该处理程序从数据库表中选择所有记录,并将结果作为JSON响应返回:
public function handle(ServerRequestInterface $request) : ResponseInterface {
$select = new Select();
$select->from('person');
$select->columns([
'id',
'name',
]);
$sql = new Sql($this->dbAdapter);
$statement = $sql->prepareStatementForSqlObject($select);
$result = $statement->execute();
$resultSet = new ResultSet();
$resultSet->initialize($result);
return new JsonResponse($resultSet->toArray());
}
有点让我烦恼的是,响应看起来像这样:
[{"id":"1","name":"tester"}]
字段“ id”在我的表(MySQL)中为INTEGER类型,因此我期望:
[{“ id”:1,“ name”:“ tester”}]]
有没有一种自动类型转换的方法?
这确实有可能,但是您必须做一些准备。 zdend-db
带有HydratingResultSet
类,其描述为here。您可以交付一个原型对象,该对象将被初始化为初始化结果集的结果。如果您使用“ setter”方法适当地管理类型,然后再对它实现\JsonSerializable
接口,则可以实现所需的结果。