Zend framework 我可以将数据库适配器设置为从Zend_Db_Table_抽象类中永久使用吗?

Zend framework 我可以将数据库适配器设置为从Zend_Db_Table_抽象类中永久使用吗?,zend-framework,zend-db-table,Zend Framework,Zend Db Table,我的站点使用2个数据库,包括一个与其他站点特定数据库相关的中央用户数据库 有时调用新用户(数组('db'=>'adapter1')就足够了(但从不方便);不过,在其他情况下,例如在不同数据库上声明表之间的关系时,无法做到这一点 有人知道从Zend_Db_Table_抽象类中指定要使用哪个数据库适配器的方法吗 谢谢 可以将类变量$\u db设置为构造函数中的正确适配器 global $adapter1; //There are better ways than using a global var

我的站点使用2个数据库,包括一个与其他站点特定数据库相关的中央用户数据库

有时调用
新用户(数组('db'=>'adapter1')就足够了(但从不方便);不过,在其他情况下,例如在不同数据库上声明表之间的关系时,无法做到这一点

有人知道从Zend_Db_Table_抽象类中指定要使用哪个数据库适配器的方法吗


谢谢

可以将类变量$\u db设置为构造函数中的正确适配器

global $adapter1; //There are better ways than using a global variable

$this->_db = $adapter1;

假设适配器对象可以在构造函数中引用。这似乎不便于移植,但我相信它会起作用。

Zend_Db_Table_Abstract提供了一种静态方法来设置默认数据库适配器。按以下步骤执行此操作:

Zend_Db_Table_Abstract::setDefaultAdapter($adapter);
现在,默认情况下,所有表对象都将使用适配器


注意:在线文档有时并不能说明这一点,因此您第二个最好的检查位置是这里的API:

很晚才回到这一点,但这里的答案没有一个对我有帮助。我选择的一些数据库模型需要使用“tdb”,并将以下代码添加到这些类中的每个类中,以自动实现这一点:

protected function _setupDatabaseAdapter()
{
    $this->_db = Zend_Registry::get('tdb');
    parent::_setupDatabaseAdapter();
}

我感谢大家在这一过程中提出的建议

可以使用init函数,它不用于
Zend\u Db\u Adapter\u Abstract,
可以在类中用于设置需要执行的任何操作
\u setAdapter
接受命名注册表项的字符串

public function init()
{
    $this->_setAdapter('tdb');
}

虽然文档有时有点模糊和混乱,但这一条恰好被提到了!哈哈,是的,在阅读文档之前,我倾向于遵循API。感谢您指出:)我相信他想要为不同的适配器设置不同的表类(他使用两个适配器)。我的理解是,设置一个默认适配器将使所有表使用一个适配器。正确-但是使用Zend_注册表而不是全局!是的,当然,这就是我在代码中添加注释的原因;然而,这似乎是说明该方法最清晰、最简单的方法。