Symfony FOSRESTBundle暴露在条件下

时间:2017-02-15 13:41:47

标签: symfony annotations fosrestbundle

我有一个实体(餐厅),其中包含以下属性

/**
 * @ORM\OneToMany(targetEntity="Review", mappedBy="restaurant")
 *
 * @Serializer\Expose
 * @Serializer\Groups({"all"})
 *
 */
private $reviews;

并且在Review实体中我有以下属性

/**
 * @var bool
 *
 * @ORM\Column(name="is_accepted", type="boolean")
 *
 * @Serializer\Expose
 * @Serializer\Groups({"all"})
 */
private $isAccepted;

显然我返回的JSON就是这样的

{
    "id": 291,
    "user": {
      "id": 385
    },
    "comment": "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.",
    "is_verified": true,
    "total_rating": 5.5,
    "is_accepted": false
  },
  {
    "id": 292,
    "user": {
      "id": 293
    },
    "comment": "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.",
    "is_verified": true,
    "total_rating": 8,
    "is_accepted": true
  },

我的问题是我如何只暴露is_accepted = true?有没有直接的方法来做或者我应该手动过滤它?感谢

1 个答案:

答案 0 :(得分:0)

您可以在方法上使用@VirtualProperty注释,只有在实际接受的情况下才会从中返回评论