Zend framework 我可以将数据库适配器设置为从Zend_Db_Table_抽象类中永久使用吗?
我的站点使用2个数据库,包括一个与其他站点特定数据库相关的中央用户数据库 有时调用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
新用户(数组('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_注册表而不是全局!是的,当然,这就是我在代码中添加注释的原因;然而,这似乎是说明该方法最清晰、最简单的方法。