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);
}
}
는 그러나, 나는 결과로이 얻을 : members
속성
{
"items": [
{
"memberCount": 17,
"id": 1,
"name": "TestGroup1",
"members": [
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{}
]
}
]
}
사용자 세부 사항이 숨겨져 있습니다. 어떻게 표시합니까?
/**
* Allows you to add additional data to the current object/root element.
* @deprecated use setData instead
* @param string $key
* @param integer|float|boolean|string|array|null $value This value must either be a regular scalar, or an array.
* It must not contain any objects anymore.
*/
public function addData($key, $value)
{
if (isset($this->data[$key])) {
throw new InvalidArgumentException(sprintf('There is already data for "%s".', $key));
}
그래서 같은 시도 : 다음 source code here의 문서를 참조
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;
}
을이 이유를 설명 I 개체를 표시 할 수 없습니다. 감사. 사용자 repo에서 getArrayResults()를 사용하여 결과를 얻으려고했습니다. 그러나, 나는 개체를 얻을 필요가 회원 목록에 중첩 배열되지 않습니다. 그러므로 나는 이것이 나를위한 최선의 해결책이 아니라는 것을 깨달았다. – misha