Php Doctrine2和执行迭代时的后加载事件的危险

Php Doctrine2和执行迭代时的后加载事件的危险,php,doctrine-orm,Php,Doctrine Orm,在Doctrine2关于事件的文档中,它说: 请注意,在使用Doctrine\ORM\AbstractQuery#iterate()时,对象水合后会立即执行加载后事件,因此关联不能保证初始化。将Doctrine\ORM\AbstractQuery\iterate()和postLoad事件处理程序结合使用是不安全的。 为什么不安全 迭代器基本上是在迭代器的基础上对行进行水合物化,所以我没有得到区别 抽象查询: 在迭代中: $this->\u em->newHydrator($this->\u hy

在Doctrine2关于事件的文档中,它说:

请注意,在使用Doctrine\ORM\AbstractQuery#iterate()时,对象水合后会立即执行加载后事件,因此关联不能保证初始化。将Doctrine\ORM\AbstractQuery\iterate()和postLoad事件处理程序结合使用是不安全的。

为什么不安全

迭代器基本上是在迭代器的基础上对行进行水合物化,所以我没有得到区别

抽象查询:

在迭代中:
$this->\u em->newHydrator($this->\u hydrationMode)->迭代($stmt,$rsm,$this->\u提示)

在执行中:
$this->\u em->newHydrator($this->\u hydrationMode)->hydrateAll($stmt,$rsm,$this->\u提示)

hydrateAllData调用HYDRATEAROWDATA但生成快照:

    while ($row = $this->_stmt->fetch(PDO::FETCH_ASSOC)) {
        $this->hydrateRowData($row, $result);
    }

    // Take snapshots from all newly initialized collections
    foreach ($this->initializedCollections as $coll) {
        $coll->takeSnapshot();
    }
与单纯的水化物相比

是关于那些快照吗