的Symfony2 - JMS串行 - 排除实体如果getDeleted()不为空
问题描述:
我有嵌套一对多的关系。一个表单有疑问组,其问题组有可能的答案。的Symfony2 - JMS串行 - 排除实体如果getDeleted()不为空
我需要实现的是,忽略被删除(实际上使用$删除PARAM)
没有排斥或只是不包括物业(带式)序列化的部分或团体或问题或可能的答案工作正常。
但是@JMS \排除(如果= “表达..”)上的类(未属性)被忽略。
use JMS\Serializer\Annotation as JMS;
/**
* @ORM\Entity
* @ORM\Table(name="entity_question_section")
* @JMS\Exclude(if="object.getDeleted() !== null")
*/
class QuestionSection
{
.......
}
的排除注释允许在类上使用 “@Target({” 财产 “ ”CLASS“, ”方法“, ”注解“})”,但它不工作。
不要紧,我用什么样的表情,它会排除QuestionSection实体内部的所有领域,并返回空对象为每个QuestionSection。
我如何序列化
$serializer = $this->get('jms_serializer');
$serialized = $serializer->serialize($form, "json");
$response = new JsonResponse();
$response->setContent($serialized);
如果我需要做嵌套循环构建JSON响应它很可能是非常糟糕的解决方案做到这一点。
我已经使用了几个小时来完成这项工作,我也试过JLM \ SerializerExpressionBundle \ JLMSerializerExpressionBundle(),但它只支持在属性上定义并且只排除属性。
我也试着表达使用服务(如果=“服务(‘通用’)。请将isDeleted(对象)”)
谁能给我正确的方向来解决这个问题?
谢谢
答
感谢@Rufinus我已经使用http://symfony.com/doc/current/bundles/StofDoctrineExtensionsBundle/index.html这解决了我的问题。现在,“删除”实体从任何查询中排除,因此串行器仅返回所需的数据。
你应该试试这个表达式:'@JMS \排除(IF = “this.getDeleted()== NULL!”)' –
不,不行。另外,如果我做,如果=“假”,或者如果=“真”的结果是一样的。它排除了所有领域,无所谓条件。我也尝试过使用服务,但服务没有被调用。但是当我在propery上使用服务时,服务被调用并正常工作。所以通常看起来,它并没有真正支持@exclude与条件上 –
类为什么不直接使用softdeleteable扩展? http://symfony.com/doc/current/bundles/StofDoctrineExtensionsBundle/index.html – Rufinus