2013-03-06 2 views
2

나는 oneToMany 관계를 가진 엔티티를 가지고 있습니다.Doctrine2, PersistentCollection 및 JMS 시리얼 화기

$this->getQueuedItems() 

교리를 반환 \ ORM \ PersistentCollection 객체, 그때 JMS Serializer이 통과하고 그래서 같은;

$serializer = $container->get('serializer'); 
$json = $serializer->serialize($this->getQueuedItems(), 'json'); 

그러나 var_dump()의 결과를 사용 $json를 출력하는 단계;

문자열 (2) "[]"

잘못된된다. 거기에 데이터가 있습니다. foreach()$this->getQueuedItems() 이상으로 받으면 데이터가 나옵니다.

JMS 직렬 변환기를 사용하여 직렬화하는 방법 Doctrine \ ORM \ PersistentCollection을 JSON으로 변환 하시겠습니까?

감사

답변

2

PersistentCollection 객체 반복자 집계되지 배열이다. 구별되는 점은 반복자는 반복 될 수있는 객체이므로 한 번에 배열에 직렬화하는 데 필요한 데이터가 포함되어 있거나 포함되어 있지 않을 수 있습니다.

는 다음을 시도, JSON으로 컬렉션을 직렬화하려면
$serializer = $container->get('serializer'); 
$arr  = $this->getQueuedItems()->toArray(); 
$json  = $serializer->serialize($arr, 'json'); 

당신이 키에 대한 너무 법석을 떨게하지 않은 경우

, 당신은 또한 오히려 toArray보다 getValues를 사용할 수 있습니다.

+0

고마워요. @hobnob, 저는 지금 쯤 다른 방식으로 돌아 왔음에 틀림 없지만, 의견을 보내 주셔서 감사합니다. –

+0

@JakeN 가능한 경우 게시하십시오. 해결 방법을 게시하십시오. 주어진 대답은 도움이되지 않는다. – Oshanz

+0

지금 내 코드를 살펴보면,'toArray'도 사용하지 않습니다. 이 번들은 관계를 위해 노력할 수도 있습니다. https://github.com/FriendsOfSymfony/FOSRestBundle –

관련 문제