Doctrine2& zf2:fetchAll()结果为JSON,将结果转换为数组,然后转换为ZF2中的json

时间:2013-10-04 05:28:02

标签: json zend-framework doctrine-orm zend-framework2

我对Doctrine和ZF2全新,来自C#env。从几天开始学习教义和zf2。并尝试学习基本的东西,以便我可以在未来几天内构建 RESTFull服务API 。现在,我试图将原则获取All()结果输入到json但未能这样做。 mys API客户端(backbone.js)工作正常,它是结果,但显示空对象

我的控制器代码就像这样

 public function getList() {

        $repository = $this->getEntityManager()->getRepository('Application\Entity\Test');

        $posts = $repository->findAll();

      echo var_dump((array)$posts);

      header('Access-Control-Allow-Origin:http://api.server.com');

     return new JsonModel($posts);
    }

var_dump结果

array(2) {
      [0]=>
      object(Application\Entity\Test)#339 (2) {
        ["id":"Application\Entity\Test":private]=>
        int(2)
        ["name":"Application\Entity\Test":private]=>
        string(5) "Kumar"
      }
      [1]=>
      object(Application\Entity\Test)#340 (2) {
        ["id":"Application\Entity\Test":private]=>
        int(1)
        ["name":"Application\Entity\Test":private]=>
        string(8) "Panindra"
      }

    }

我的JSONModel out put是[{},{}]

我想将其构建为RESTFull服务

2 个答案:

答案 0 :(得分:5)

您可以使用带getResult()选项的Doctrine\ORM\Query对象的QueryBuilder APIHYDRATE_ARRAY方法来实现此目的。例如:

$queryBuilder = $this->getEntityManager()->createQueryBuilder();
$queryBuilder->select('t')
             ->from('Application\Entity\Test', 't');

$results = $queryBuilder->getQuery()
                        ->getResult(\Doctrine\ORM\AbstractQuery::HYDRATE_ARRAY);

return new JsonModel($results);

答案 1 :(得分:0)

代码中的所有内容都是正确的,并且运行正常。 JsonModel是“空的”,因为您的类成员是私有的。如果将它们设置为public,您将获得预期的JsonModel。