首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ZF2: TableGateway ResultSet to JSON

ZF2: TableGateway ResultSet to JSON
EN

Stack Overflow用户
提问于 2014-10-04 15:48:36
回答 2查看 1.2K关注 0票数 2

我试图在ZendFramework2中将数据库中的数据返回给JSON,我现在使用的是TableGateway,它返回一个ResultSet。但是JsonModel不能显示结果集。,那么有什么方法来转换它,还是有其他的方法来访问我的数据库?

IndexAction中的HomeController

代码语言:javascript
复制
public function indexAction()
{
    return new JsonModel(array(
        'posts' => $posts,
        'resources' => $resources,
        'style' => $style,
        'imgStyle' => $imgStyle,
        'success' => true,
    ));
}

返回结果集的函数。

代码语言:javascript
复制
public function fetchAll()
{
    $resultSet = $this->tableGateway->select(function (Select $select) {
        $select->order('date DESC');
    });
    return $resultSet;
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-06 08:24:04

考虑到您已经在module.config.php中这样做了:

代码语言:javascript
复制
'view_manager' => array(
    'strategies' => array(
        'ViewJsonStrategy',
    ),
),

我的下一个建议是将结果转换为数组。

代码语言:javascript
复制
$resultSet->toArray();

代码语言:javascript
复制
$return = array();

foreach( $resultSet as $r )
    $return[]=$r;

您返回的新JsonModel,是正确的。

票数 3
EN

Stack Overflow用户

发布于 2021-10-14 18:54:39

您可以在Zend\Stdlib\Hydrator\Reflection-hydrator中使用fetchAll方法,也可以在Controller中使用

代码语言:javascript
复制
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;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26194438

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档