我的站点使用了 2 个数据库,包括一个与其他站点特定数据库相关的中央用户数据库。
有时打电话就足够了new User(array('db'=>'adapter1'));
(但从不方便);但是,在其他时候,例如在不同数据库上声明表之间的关系时,没有办法做到这一点。
有谁知道在 Zend_Db_Table_Abstract 类中指定使用哪个数据库适配器的方法?
谢谢!
我的站点使用了 2 个数据库,包括一个与其他站点特定数据库相关的中央用户数据库。
有时打电话就足够了new User(array('db'=>'adapter1'));
(但从不方便);但是,在其他时候,例如在不同数据库上声明表之间的关系时,没有办法做到这一点。
有谁知道在 Zend_Db_Table_Abstract 类中指定使用哪个数据库适配器的方法?
谢谢!
很晚才回到这一点,但是这里的答案都没有对我有用。我的一些数据库模型需要使用“tdb”,并且将以下代码添加到每个类中以使其自动发生:
protected function _setupDatabaseAdapter()
{
$this->_db = Zend_Registry::get('tdb');
parent::_setupDatabaseAdapter();
}
我感谢大家一路上的建议!
Zend_Db_Table_Abstract 提供了一个静态方法来设置默认的数据库适配器。执行以下操作:
Zend_Db_Table_Abstract::setDefaultAdapter($adapter);
现在,您的所有 Table 对象将默认使用您的适配器。
注意:在线文档有时并不明显,因此您检查的第二个最佳位置是此处的 API:http: //framework.zend.com/apidoc/core/
您可以在构造函数中将类变量 $_db 设置为正确的适配器。
global $adapter1; //There are better ways than using a global variable
$this->_db = $adapter1;
假设可以在构造函数中引用适配器对象。这似乎不便携,但我相信它会工作。
可以使用 init 函数,不使用它Zend_Db_Adapter_Abstract,
可以在你的类中使用来设置需要做的任何事情。_setAdapter
接受一个命名注册表项的字符串。
public function init()
{
$this->_setAdapter('tdb');
}