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