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