PersistentCollection未初始化,但数据库中的数据使用Symfony和Doctrine

时间:2016-08-03 17:51:09

标签: php mongodb doctrine symfony

我遇到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,而它们是数据库中的事件。

当转储getDispos()方法的返回时,我有: dump of result getDispos() method

我不明白为什么我的数据有mongoData字段但是arrayCollection为空。

谢谢你的帮助。

1 个答案:

答案 0 :(得分:3)

PersistentCollection被懒惰地初始化 - 出于性能原因,来自数据库的数据保存在mongoData中。该集合在您第一次需要其中的某些数据时进行初始化(或尝试对其进行修改) - 然后mongoData中保存的数据会融合到您的嵌入文档中,并添加到装饰coll中。所有这一切都是透明地发生在您身上,只是尝试使用您的集合而不是转储它。