我们可以并排使用doctrine和Zend_db_table模型吗?

时间:2012-02-18 12:00:40

标签: zend-framework

我有一个已经使用Zend_db_table模型的小型zend项目,我正在尝试扩展这个项目,以便我可以在新的控制器和模型中使用doctrine来保留旧模型。有可能吗?

1 个答案:

答案 0 :(得分:0)

两个DBAL的引导和API消耗都应该是直截了当的。

在我看来,主要问题是重新使用数据库连接,也就是说,执行路径同时使用DoctrineZend_Db的一个请求不应该打开单独的连接。

似乎Doctrine\DBAL\Connection有一个方法getWrappedConnection(),它返回 - 例如 - 一个PDO连接(实际上是SPL的PDO类的子类,但仍然是一个实例PDO)。原则上,你可以先引导Doctrine,抓住这个连接,然后以某种方式“传递”到Zend_Db_Adapter。但是,虽然我确实看到了一个名为Zend_Db_Adapter_Abstract::getConnection()的方法,但我没有看到一个名为setConnection()的方法。也许为所需的Zend_Db适配器创建一个自定义子类?

我看到的另一个问题是Doctrine\DBAL\Connection::getWrappedConnection()实际上打开了db的连接。如果我们在bootstrap期间调用它然后将该连接传递给Zend_Db端,那么我们将丢失两个DBAL的延迟连接功能。

当然,如果没有执行路径需要同时调用DoctrineZend_Db,那么也许没有问题。只需引导它们,让代码调用它需要的任何一个。如果你有处理能力来处理它,那么每个请求可能有两个连接不是游戏杀手(虽然它让我感觉非常严重)。

大声思考。