我遇到PersistentCollection问题。
我有一个具有EmdebedDocument Seance的对象用户(FOSUserbundle用户类)。 Seance有一个事件阵列。 我的Seance课程:
/**
* @MongoDB\EmbeddedDocument
*/
class Seance
{
/**
* @MongoDB\Id
*/
protected $id;
/**
* @MongoDB\EmbedMany(targetDocument="Event")
*/
protected $dispos ;
/**
* @MongoDB\Field(type="string")
*/
protected $rayonDeplacement;
/**
* @MongoDB\Field(type="string")
*/
protected $lieu;
/**
* @MongoDB\Field(type="string")
*/
protected $prix;
/**
* @MongoDB\Field(type="string")
*/
protected $nbPersonne;
我的班级活动
/**
* @MongoDB\EmbeddedDocument
*/
class Event extends BaseEvent
{
/**
* @var integer
* @MongoDB\Id
*/
protected $id;
/**
* @var \DateTime
* @MongoDB\Field(type="date")
* @Assert\NotNull()
*/
protected $startDate;
/**
* @var \DateTime
* @MongoDB\Field(type="date")
* @Assert\NotNull()
*/
protected $endDate;
我从用户那里给出了事件:
$user->getSeance()->getDispos()
此函数返回空PersistentCollection,而它们是数据库中的事件。
我不明白为什么我的数据有mongoData字段但是arrayCollection为空。
谢谢你的帮助。
答案 0 :(得分:3)
PersistentCollection
被懒惰地初始化 - 出于性能原因,来自数据库的数据保存在mongoData
中。该集合在您第一次需要其中的某些数据时进行初始化(或尝试对其进行修改) - 然后mongoData
中保存的数据会融合到您的嵌入文档中,并添加到装饰coll
中。所有这一切都是透明地发生在您身上,只是尝试使用您的集合而不是转储它。