我对Doctrine model hydrate()方法有一点问题.我使用这种方法从给定的数组中水合一个conrete模型的对象,如下所示:
- $model = new Doctrine\Model\Model;
- $model->hydrate($model_array);
使用嵌套的子模型对简单物体进行保湿时,一切都很完美.现在的问题是我需要使用嵌套对象来水合(使用此方法)一个对象(其中一些对象也有嵌套对象).
如果我使用HYDRATE_RECORD就可以了,但查询中的所有记录都将作为对象返回,这意味着更多的内存消耗.因此,我正在使用HYDRATE_ARRAY并按需将具体数组水合成一个对象.
假设我有一个模型A,它有嵌套模型AB,AC(一对多),AD和AC有另一个嵌套模型ACE.在A数组的print_r之后,我们可以看到这个结构:
- 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 ( ... )
- }
因此只有主模型转换为对象.
您是否了解如何将所有嵌套模型数组转换为假定结果的对象?
如果偶然发现
this,请查看文档.
你有没有试过来自阿雷而不是水合物?