Symfony2。json输出,序列化
一个Symfony2新手问题 在以下代码中我遗漏了什么(它返回“对非对象上的成员函数getArrayResult()的调用”) 我是否需要使用“使用原则\ORM….;”线路?到底是哪一个?Symfony2。json输出,序列化,symfony,Symfony,一个Symfony2新手问题 在以下代码中我遗漏了什么(它返回“对非对象上的成员函数getArrayResult()的调用”) 我是否需要使用“使用原则\ORM….;”线路?到底是哪一个? 根据我的经验,感谢方法getResult()和getArrayResult()随$query对象而来,而不是$result对象。所以我们不想同时使用->execute()和getResult()。这就是你代码中的错误。我们可以像这样重写你的代码 public function jsonoutAction()
根据我的经验,感谢
方法getResult()
和getArrayResult()
随$query
对象而来,而不是$result
对象。所以我们不想同时使用->execute()
和getResult()
。这就是你代码中的错误。我们可以像这样重写你的代码
public function jsonoutAction()
{
$response = new Response();
$em = $this->getDoctrine()->getEntityManager();
$query = $this->getDoctrine()
->getRepository('MarioBlogBundle:Post')
->createQueryBuilder('e')
->select('e')
->getQuery();
$results = $query->getArrayResult(); //or getResult(Doctrine\ORM\Query::HYDRATE_ARRAY);
$response->setContent(json_encode($results));
$response->headers->set('Content-Type', 'application/json');
return $response;
}
它会成功的。两个建议:
1) 您不需要执行
查询,只需说
$query->getResult()
将返回对象数组。如果你
想要得到可以使用的纯数组的结果吗
$query->getArrayResult()
,它将返回找到的值的数组。
如果要选择全部,也不需要使用select('e')
列
2) 如果您想获取所有没有任何条件和条件的记录,可以使用findAll()代码>返回实体中所有对象的数组:
$em = $this->getDoctrine()->getEntityManager();
$results = $em->getRepository('MarioBlogBundle:Post')->findAll();
现在,通过安装和使用这个类,您可以获得数组输出或JSON输出(这是您想要的)。例如:
$entitySerializer = new Bgy\Doctrine\EntitySerializer($em);
$jsonOutput = $entitySerializer->toJson($results);
是的,很管用,非常管用。小问题:为什么我需要参数“e”?我在文档中找不到它。我认为它是查询中所选实体的别名,例如,selectid from employees e…..
$entitySerializer = new Bgy\Doctrine\EntitySerializer($em);
$jsonOutput = $entitySerializer->toJson($results);