Symfony2。json输出,序列化

Symfony2。json输出,序列化,symfony,Symfony,一个Symfony2新手问题 在以下代码中我遗漏了什么(它返回“对非对象上的成员函数getArrayResult()的调用”) 我是否需要使用“使用原则\ORM….;”线路?到底是哪一个? 根据我的经验,感谢方法getResult()和getArrayResult()随$query对象而来,而不是$result对象。所以我们不想同时使用->execute()和getResult()。这就是你代码中的错误。我们可以像这样重写你的代码 public function jsonoutAction()

一个Symfony2新手问题

在以下代码中我遗漏了什么(它返回“对非对象上的成员函数getArrayResult()的调用”)

我是否需要使用“使用原则\ORM….;”线路?到底是哪一个?
根据我的经验,感谢
方法
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);