根据与 Serializer 的关系序列化选定的属性

Posted

技术标签:

【中文标题】根据与 Serializer 的关系序列化选定的属性【英文标题】:Serialize selected properties on relationship with Serializer 【发布时间】:2022-01-18 03:55:46 【问题描述】:

我有两个学说实体:

/**
 * @ORM\Table()
 */
class User 
    /**
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @var string
     *
     * @ORM\Column(type="string" ,nullable=false)
     */
    private $name;

    /**
     * @var ArrayCollection
     *
     * @ORM\ManyToMany(targetEntity="Post")
     */
    private $posts;

 
/**
 * @ORM\Table()
 */
class Post 
    /**
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @var string
     *
     * @ORM\Column(type="string" ,nullable=false)
     */
    private $content;

使用Serializer组件时,是否可以只为User的posts属性中的每个实体序列化id属性?

例如:


    "id": 79,
    "name": "User 1",
    "post": [
      
        "id": 73,
      
    ],

【问题讨论】:

【参考方案1】:

是的,您可以忽略序列化中的其他属性。

请参阅:Ignoring Attributes(序列化器组件文档)

Post:
    attributes:
        content:
            ignore: true

我给你一个 YAML 例子,因为我不知道你用什么格式来定义序列化。

【讨论】:

以上是关于根据与 Serializer 的关系序列化选定的属性的主要内容,如果未能解决你的问题,请参考以下文章

序列化器关系 (Serializer relations)

使用JMS Serializer仅将实体关系序列化为Id

序列化器:ModelSerializer

第三章drf框架 - 序列化组件 | Serializer

20-Django REST framework-Serializer序列化器

序列化组件serializer之序列化与反序列化