1
我正在构建Symfony3项目。我正在使用JMS进行序列化。我有Group
与ManyToMany关系的实体到User
。我正在尝试向Group
对象添加更多数据。我正在使用序列化侦听器来实现这一点。例如,我想获得与当前用户同一学校的小组成员。我setData
到组对象是这样的:JMS序列化侦听器:添加的对象为空
class SerializationListener{
//Constructor
/**
* @param ObjectEvent $event
*/
public function onGroupEntitySerialize(ObjectEvent $event)
{
if (!$this->currentUser) {
return;
}
/** @var GenericSerializationVisitor $visitor */
$visitor = $event->getVisitor();
$group = $event->getObject();
$groupMembersFromUserSchool = $this->em->getRepository('AppBundle:User')
->groupMembersFromUserSchool($group, $this->currentUser);
$visitor->setData('members', $groupMembersFromUserSchool);
$groupMembersCountFromUserSchool = count($groupMembersFromUserSchool);
$visitor->setData('memberCount', $groupMembersCountFromUserSchool);
}
}
不过,我得到这个作为结果:
{
"items": [
{
"memberCount": 17,
"id": 1,
"name": "TestGroup1",
"members": [
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{}
]
}
]
}
所以在members
财产用户的详细信息被隐藏。我如何显示它们?
class Group{
/**
* @Expose()
* @Groups({"group-details", "group-list"})
*/
protected $members;
}
class User{
/**
* @Expose()
* @Groups({"group-details", "group-list"})
*/
private $id;
/**
* @Expose()
* @Groups({"group-details", "group-list"})
*/
protected $name;
}
这就解释了为什么我无法显示对象。谢谢。我试图通过用户回购中的getArrayResults()获得结果。但是,我需要获取对象,而不是在成员列表中嵌套数组。因此我意识到这对我来说不是最好的解决方案 – misha