如何使用Doctrine持久化复杂的嵌套对象?

时间:2017-09-25 16:32:17

标签: doctrine-orm persistence nested-forms zend-framework3 saving-data

我正在将Zend Framework 3应用程序的DBAL迁移到Doctrine。数据检索部分已完成并正常工作。现在轮到了数据保存。

对象/实体的动态结构或多或少是复杂的(约10级)。然后有Fieldset s的结构,它反映了对象的结构。将Form的数据保存到嵌套对象/实体是Zend\Form的问题。所以我从Form得到了一个准备保存的完整对象。

目前保存工作如下:

有一个Mapper类的结构,它反映了对象'/实体'的结构。意思是:每个实体都有Mapper。每个Mapper都知道其“子Mappers”。如果映射器FooEntity处理的实体FooMapper具有BarEntity类型的属性,则FooMapper#save(...)会调用BarMapper#save(...)来保留它。然后,如果映射器BarEntity处理的实体BarMapper具有BuzEntity[]类型的属性,BarMapper#save(...)将在循环中调用BuzMapper#save(...)以保留数据。等等......

如何使用Doctrine的功能替换所有难以维护的东西,并以更优雅的方式处理这种级联保存?

使用cascade={"persist"}可以消除某些保存功能。但我的问题是,对于所有其余部分,我没有比保持分层Mapper结构只是替换Zend\Db的{​​{1}}和insert(...)更好的想法。学说的update(...)

0 个答案:

没有答案