我有一个已经使用Zend_db_table模型的小型zend项目,我正在尝试扩展这个项目,以便我可以在新的控制器和模型中使用doctrine来保留旧模型。有可能吗?
答案 0 :(得分:0)
两个DBAL的引导和API消耗都应该是直截了当的。
在我看来,主要问题是重新使用数据库连接,也就是说,执行路径同时使用Doctrine
和Zend_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的延迟连接功能。
当然,如果没有执行路径需要同时调用Doctrine
和Zend_Db
,那么也许没有问题。只需引导它们,让代码调用它需要的任何一个。如果你有处理能力来处理它,那么每个请求可能有两个连接不是游戏杀手(虽然它让我感觉非常严重)。
大声思考。