3

我有一个与此处声明的另一个实体(类型)具有多对一关系的实体(项目):

     /**
     * @ORM\ManyToOne(targetEntity="Type", inversedBy="item")
     * @ORM\JoinColumn(name="type_id", referencedColumnName="id", nullable=true)
     * @Expose
     */
    protected $itemType;

当我序列化项目时,它包括引用实体(类型)上的其他属性,而我想要的只是 ID:

item_type: {
     id: 1
},

取而代之的是:

item_type: {
     id: 1,
     name: "Case & Cover",
     description: "Keep your phone safe with stylish cases and covers"
},

我已经阅读了文档并使用组和 maxdepths 进行了测试,但没有运气,并浏览了我遇到的问题: https ://github.com/schmittjoh/JMSSerializerBundle/issues/61#issuecomment-3297955

是否已经包含此功能?

使用"jms/serializer-bundle": "dev-master"

编辑

这是具有关联的示例序列化实体:

{
    id: 1,
    name: "iPhone 5c Slim Genuine Leather Portfolio Case with Stand - Classic Black",
    price: 29.95,
    description: "...",
    image: "1.jpg",
    item_type: {
        id: 1,
        name: "Case & Cover"
    },
    item_brand: [
        {
            id: 1,
            name: "Apple"
        }
    ]
}

我真正想要的是这个(没有关联实体的任何额外属性):(使用 JMS Serializer,因为它是一个很棒的库:))

{
    id: 1,
    name: "iPhone 5c Slim Genuine Leather Portfolio Case with Stand - Classic Black",
    price: 29.95,
    description: "...",
    image: "1.jpg",
    item_type: {
        id: 1
    },
    item_brand: [
        {
            id: 1
        }
    ]
}
4

1 回答 1

1

您必须为实体使用 exludePolicyType @ExclusionPolicy('all')并添加@Exposeid属性中。

请参阅文档http://jmsyst.com/libs/serializer/master/reference/annotations

希望它有帮助

最良好的问候。

于 2014-01-08T10:48:16.887 回答