这里是主要文件字段的定义:
/**
* @var ArrayCollection
* @MongoDB\ReferenceMany(
* targetDocument="Some\Namespace\Document\Reference",
* sort={"creationDate": "desc"},
* simple=true
* )
* @Expose
* @Groups({"Main"})
* @Type("ArrayCollection<Some\Namespace\Document\Reference>")
* @var \Some\Namespace\Document\Reference[]
*/
protected $references;
我试图获取主要文档列表并通过JMS Serializer序列化它们,但我发现,引用是空数组。经过一番调查,我发现,对于getReferences,文档返回 PersistentCollection 的实例:
由于初始化方法,因为它清除了mongoData。
我通过以下代码获得了正确的结果:
/**
* @VirtualProperty
* @SerializedName("reference_ids")
* @Groups("Main")
* @return array
*/
public function getReferenceIds()
{
$out = array();
foreach ($this->getReferences()->getMongoData() as $val) {
$out[] = (string)$val;
}
return $out;
}
但这只是一条捷径而且我感觉不到,这是一个合适的解决方案。
如果有人知道如何使用PersistentCollection检索这些ID或整个文档以及为什么初始化方法会清除mongoData?
感谢。