我正在使用FOSRestBundle为Symfony2项目构建API,我经常只返回要在JSON中编码的Doctrine对象。通常这样:
/**
* @Rest\View()
*/
public function getEventsAction(Request $request)
{
// security checks
return $this->getDoctrine()->getRepository('SomeBundle:Event')->findAll();
}
事实上,这会返回所有对象属性和关系,并且在很多情况下我不想要这样,例如,使用包含散列密码和所有内容的User对象。
在JSON中编码Doctrine对象时,有没有办法设置自动过滤器?或者我是否必须创建仅获取所需数据的QueryBuilder?
答案 0 :(得分:4)
我强烈建议您使用JMSSerializerBundle,它会根据您的需要为您提供尽可能多的选项。将项目包含在项目中后,可以将实体配置为仅序列化特定属性。有很多方法可以做到,你可以在文档的exclusion strategies部分看到所有不同的方法。
您可以排除特定属性等等。看一看。
另外,请查看my other answer以获取有关如何将其与FOSRestBundle一起使用的更多信息