【问题标题】:JMSSerializerBundle - only serialize ID in doctrine relationJMSSerializerBundle - 仅在学说关系中序列化 ID
【发布时间】:2015-03-24 17:25:41
【问题描述】:

例如,假设我有两个实体,ArticleComment,cmets 通过单向 ma​​nyToOne 关系映射到文章。我想知道的是,如果可以序列化关系,但是在mappedOne中,只序列化ID。

例如,如果我序列化一篇文章,我将得到它的完整 json 表示(包括 id、标题、内容...)。

{"title":"article title", "content":"article content", "id":"7"}

但是如果我序列化一个评论,我希望它有一个完整的 json 表示,但是在 article 字段中,我只想要文章 id。

{"id":"2", "author":"foo","content":"comment content","linked_article":{"id":"7"}}

非常感谢!

【问题讨论】:

标签: symfony doctrine-orm jmsserializerbundle


【解决方案1】:

在控制器动作(getCommentAction)中,注解中有序列化程序组吗?

我认为通过将此注释放在控制器操作上

@Rest\View(serializerGroups={"id","comment"}

在您的文章实体中放置

/**
 * @JMS\Serializer\Annotation\Groups({"id", "article"})
*/
protected $id;

它应该可以工作。

【讨论】:

  • 如果在某些情况下我想要唯一的 id,但在其他情况下,我想要完整的文章怎么办?我认为最好使用@Accessor注解。
  • 我对@Access 的理解是它只是告诉序列化程序使用哪种方法来获取/设置属性。如果您只想动态设置应该序列化的内容,您始终可以使用GET /users?return=idGET /users?return=id,comment 等请求传递组,这将决定使用哪些序列化程序组
  • 就我而言,我需要为不同的关系制定核心序列化规则。例如,我们有评论文章和推广文章。如果我要在文章网站上设置规则,它将被序列化为评论和推广的 id。但是我需要 id 来评论和 full 来推广。而且不仅用于休息视图。因此,Artcile 的规则应该在每个关系所有者端进行配置。
猜你喜欢
  • 2015-08-19
  • 1970-01-01
  • 1970-01-01
  • 2013-04-06
  • 2014-09-27
  • 1970-01-01
  • 2017-01-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多