如果特定组正在序列化,则 JMS @Discriminator 文件不会出现

JMS @Discriminator filed doesn't appear if specific group is serializing

我正在使用 Symfony 2.8、FOSRestBundle 和 JMSSerializerBundle。

问题

当我序列化实体 Citizen 的特定组(以下示例中的 "api" 组)时,Document 实体的鉴别器字段 type 没有出现在序列化模型中。

学说实体

文件:

namespace MyBundle\Entity;

use JMS\Serializer\Annotation as JMS;
…    

/**
 * @JMS\Discriminator(field = "type", map = {
 *      "doc1"              = "MyBundle\Entity\Document1",
 *      "doc2"              = "MyBundle\Entity\Document2"
 * })
 */
class Document 
…

市民:

class Citizen
{
 …
    /**
     * @var ArrayCollection
     *
     * @ORM\OneToMany(
     *      targetEntity="MyBundle\Entity\Document",
     *      cascade={ "PERSIST", "REMOVE" },
     *      orphanRemoval=true,
     *      mappedBy="citizen"
     * )
     *
     * @JMS\Groups({"api"})
     */
    private $documents;
    …

我得到的

{
…
"documents": [
    {
        "number": "000000",
        "date": "01.01.1970",
        "serial": "0000",
        "place": ""
    }
],
…
}

我需要什么

{
…
"documents": [
    {
        "type": "doc1",
        "number": "000000",
        "date": "01.01.1970",
        "serial": "0000",
        "place": ""
    }
],
…
}

如果我删除特定的序列化组,那么 type 字段会出现在序列化输出中。

提前致谢

刚在 github 上找到 issue。 目前看来,需要 Default 组的解决方法,请参阅 lordelph's comment