将 Zend_Db 与 ORM 类混合

Posted

技术标签:

【中文标题】将 Zend_Db 与 ORM 类混合【英文标题】:Mixing Zend_Db with ORM Classes 【发布时间】:2010-10-02 02:03:53 【问题描述】:

Zend 有 Zend_Db 但它不是一个完整的 ORM。我已经有使用 Zend_Db 编写的应用程序部分。不过,我确实想将完整的 ORM 集成到应用程序中,以将其用于更复杂的数据库操作,但我不想重新编写已完成的现有操作。

那些对 Zend 框架更有经验的人,您是否发现在某些操作中使用 Zend_Db 而在其他操作中使用 ORM 有问题? Zend_Db 生成的类是否可以与 ORM 生成的数据库类共存?如果我在一个动作中同时使用这两个类怎么办?我没有看到那里有冲突,但我对 MVC 或 ORM 不是很好,所以我可能会错过一个大冲突。

【问题讨论】:

【参考方案1】:

在 ZF 的 1.0 版本中,我在 Zend_Db 上工作了很多,并且我也使用了一点点 Doctrine。

Zend_Db 和另一个 ORM 之间不应该有任何冲突。然而,通过 Zend_Db 接口获取的对象将不知道通过另一个 ORM 接口获取的对象,例如教义,反之亦然。

因此,如果您的其他 ORM 试图巧妙地将批处理提交到数据库,您可能希望在尝试从 Zend_Db 对象中的相同行加载数据之前强制它提交。反之亦然。

也就是说,在这两个 ORM-ish 库中都没有任何东西可以帮助您管理这些情况,因此您需要了解每个 ORM 的行为方式。听起来您正在为适应 leaky abstractions 做大量工作,最好重写现有的 Zend_Db 代码。

【讨论】:

以上是关于将 Zend_Db 与 ORM 类混合的主要内容,如果未能解决你的问题,请参考以下文章

sqlalchemy 的 ORM 与 Core 混合方式使用示例

还在纠结Dapper或者EF Core?不妨试试“混合ORM”--RepoDb

使用 filter() 和 Q 对象混合的 Django ORM 查询

如何将特征混合到实例中?

混合类Mixins介绍

唐迪资讯单轴桨叶混合机Single Shaft Paddle Mixer