我对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,请查看文档.
你有没有试过来自阿雷而不是水合物?