JMS Serializer自引用对象,其他详细信息级别为

时间:2017-03-21 14:03:30

标签: php symfony jms-serializer

我使用了一些相关的对象,并尝试在不同的级别管理序列化(我使用JMS Serializer)的最佳方法取决于属性。

我的情况:

我有公司对象,有很多属性可以用作API资源[listdetails组]。 现在我创建了一个名为的对象,其中我引用了相关公司,还有一些额外的数据,比如得分等。但我也希望存储一些其他公司的建议,因为它是卡的一部分同样。这就是班级的样子:

class Card
{
/**
 * @Serializer\Groups({"details"})
 */
protected $company;

/**
 * @Serializer\Groups({"details"})
 */
protected $score;

/**
 * @Serializer\Groups({"details"})
 */
protected $type;


/**
 * @Serializer\Groups({"details"})
 */
protected $suggestedCards;

}

公司对象中的 $ company $ suggestedCompanies 是公司对象的集合。公司对象也配置了组,因此我收集了所有需要的数据。

使用该代码,$ company和$ suggestedCompanies都包含详细信息组允许的所有数据,但我的期望是仅显示部分数据(例如 id,name,城市,所以,不仅仅是ID)以获取建议。

我发现的问题是,即使我尝试为这些属性(suggested_companies)创建不同的组,它们仍会显示详细信息中的所有数据,因为我仍然使用此组来获取主要公司数据

我解决了这个问题,对于 suggestedCompanies 我创建了一个单独的对象,我在构造函数中传递了所有必需的字段,因此我可以为此设置自己的序列化规则。

它工作得很好,我只是想知道这个问题是否有更好的解决方案。

0 个答案:

没有答案
相关问题