JMSerializer按属性条件排除实体

时间:2018-10-08 17:20:52

标签: symfony jmsserializerbundle jms-serializer

我有一个安装了JMSSerializerBundle的symfony应用程序。
我的实体看起来像这样:

class MyEntity {

    /**
     * Attribute[]
     *
     * @ORM\OneToMany(targetEntity="AppBundle\Entity\Attribute", mappedBy="myEntity")
     * @JMS\Groups({"attributeSet_detail"})
     * @ORM\OrderBy({"position" = "ASC"})
     */
    protected $attributes;
}

AppBundle\Entity\Attribute实体具有布尔属性isActive

现在,我只想序列化MyEntity(包括所有attributes),但仅将属性isActive设置为true的那些序列化

1 个答案:

答案 0 :(得分:3)

您可以使用JMS Serializer动态排除策略。

<?php

class MyObject
{

    /**
     * @Exclude(if="true")
     */
    private $name;

    /**
     * @Expose(if="true")
     */
    private $name2;
}

在这里查看文档:{​​{3}}