如何使用ZendDb在Zend框架2在一个现实世界的项目?关于外键和关系的探索



我已经完成了Zend 2的教程,但对ZendDb组件感到有点失望。事实上,它不能处理外键(作为内置的)。

如何在实际项目(至少有10个不同的表和关系)中处理这个问题?

我是否应该考虑尝试或多或少地重写Zend_Db (ZF1)的findDependentRowset或findParentRow ?如果我认为这是不可能的,那么我错了吗?因为它将打破PHP对象对Data Mapper模式所销售的外部世界一无所知的教条。

我应该总是考虑使用外键/关系的代码与表示实体的对象无关吗?这可能会变成一段漂亮的意大利面条式代码。

我应该放弃ZendDb学说或推进?

这是一个固执己见的问题,因此很快就会结束。最终Doctrine2(或Propel)只是做同样的事情,你也可以手动处理ZendDbHydrationStrategies

问题是,ZendDb内置了创建自己的Doctrine2的一切。您可以做完全相同的事情,但是不能将ZendDb视为一个完全成熟的DBAL。ZendDb组件用于处理数据库查询。此外,还提供了一些可以使用的东西,如TableGateway

然而,如果你期望ZendDb是一个DBAL,那么你就错了。ZendDb已经从所有DBAL的东西中解脱出来,因为有更好的解决方案。你提到的那两个首先会浮现在我的脑海里。即使在ZF1中,Zend_Db -组件也从未能够匹配真正的DBAL可以做的事情,因此在ZF2的设计过程中决定点亮ZendDb -组件。现在它是非常有用的简单的事情,你可以使用HydrationStrategies做"ForeingKeyToObject"映射,太,但它需要一点工作。如果你想要一个更简单的解决方案,我将投票给DoctrineModuleDoctrineORMModule

最新更新