Я создаю проект Symfony3. Я использую JMS для сериализации. У меня есть объект Group
с отношением ManyToMany к User
. Я пытаюсь добавить дополнительные данные к Group
объектам. Я использую прослушиватель сериализации для достижения этой цели. Например, я хочу получить членов группы для этой группы, которые ходили в ту же школу, что и текущий пользователь. Я setData
группирую объект следующим образом:
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;
}