Doctrine2,PersistentCollection和JMS Serializer

时间:2013-03-06 20:52:12

标签: json doctrine-orm jmsserializerbundle

我有一个具有oneToMany关系的实体,我可以使用;

获取相关项目
$this->getQueuedItems()

这将返回 Doctrine \ ORM \ PersistentCollection 对象,然后我将其传递给JMS Serializer,就像这样;

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

但使用$json输出var_dump()会导致;

  

string(2)“[]”

哪个错了。那里有数据,因为如果我foreach()超过$this->getQueuedItems(),我会得到数据。

如何使用JMS Serializer将 Doctrine \ ORM \ PersistentCollection 序列化为JSON?

由于

1 个答案:

答案 0 :(得分:2)

PersistentCollection对象是Iterator Aggregate而不是数组。区别在于Iterator是一个可以迭代的对象,因此可能包含或不包含在任何时候序列化到数组所需的数据。

要将Collection序列化为JSON,请尝试以下操作:

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

如果您对密钥不太满意,也可以使用getValues,而不是toArray