hydrate()
我对 Doctrine 模型方法有一点问题。我使用这种方法从给定的数组中水合一个具体模型的对象,如下所示:
$model = new Doctrine\Model\Model;
$model->hydrate($model_array);
在没有嵌套子模型的情况下为简单对象补水时,一切都很完美。现在的问题是我需要水合(使用此方法)具有嵌套对象(其中一些也具有嵌套对象)的对象。
如果我使用HYDRATE_RECORD
它会很好,但是查询中的所有记录都将作为对象返回,这意味着更多的内存消耗。因此,我正在使用HYDRATE_ARRAY
并按需将该具体数组水合到一个对象中。
假设我有一个模型 A,它有嵌套模型 AB、AC(一对多),AD 和 AC 有另一个嵌套模型 ACE。在print_r
A 数组之后,我们可以看到这个结构:
A Array (
...
ab Array ( ... )
ac Array (
AC Array (
...
ace Array ( ... )
)
AC Array (
...
ace Array ( ... )
)
...
)
ad Array ( ... )
)
通常在使用水合物后,我会假设这将是我的目标:
A Object {
...
ab Object { ... }
ac Array (
AC Object {
...
ace Object { ... }
}
AC Object {
...
ace Object { ... }
}
...
)
ad Object { ... }
}
但我得到的不是这个结构:
A Object {
...
ab Array ( ... )
ac Array (
AC Array (
...
ace Array ( ... )
)
AC Array (
...
ace Array ( ... )
)
...
)
ad Array ( ... )
}
所以只有主模型被转换为对象。您知道如何将所有嵌套模型数组转换为预期结果的对象吗?
HYDRATE_RECORD
不,查询数据库时我不能使用。