我对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服务
答案 0 :(得分:5)
您可以使用带getResult()
选项的Doctrine\ORM\Query
对象的QueryBuilder API和HYDRATE_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。