我试图在ZendFramework2中将数据库中的数据返回给JSON,我现在使用的是TableGateway,它返回一个ResultSet。但是JsonModel不能显示结果集。,那么有什么方法来转换它,还是有其他的方法来访问我的数据库?
IndexAction中的HomeController
public function indexAction()
{
return new JsonModel(array(
'posts' => $posts,
'resources' => $resources,
'style' => $style,
'imgStyle' => $imgStyle,
'success' => true,
));
}返回结果集的函数。
public function fetchAll()
{
$resultSet = $this->tableGateway->select(function (Select $select) {
$select->order('date DESC');
});
return $resultSet;
}发布于 2014-10-06 08:24:04
考虑到您已经在module.config.php中这样做了:
'view_manager' => array(
'strategies' => array(
'ViewJsonStrategy',
),
),我的下一个建议是将结果转换为数组。
$resultSet->toArray();或
$return = array();
foreach( $resultSet as $r )
$return[]=$r;您返回的新JsonModel,是正确的。
发布于 2021-10-14 18:54:39
您可以在Zend\Stdlib\Hydrator\Reflection-hydrator中使用fetchAll方法,也可以在Controller中使用
public function __construct(\Zend\Stdlib\Hydrator\Reflection $hydrator)
{
$this->hydrator = $hydrator;
}
public function fetchAll() : array
{
$resultSet = $this->tableGateway->select(function (Select $select) {
$select->order('date DESC');
});
$return = [];
foreach($resultSet as $result) {
$return[] = $this->hydrator->extract($result);
}
return $return;
}https://stackoverflow.com/questions/26194438
复制相似问题