3

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

有时打电话就足够了new User(array('db'=>'adapter1'));(但从不方便);但是,在其他时候,例如在不同数据库上声明表之间的关系时,没有办法做到这一点。

有谁知道在 Zend_Db_Table_Abstract 类中指定使用哪个数据库适配器的方法?

谢谢!

4

4 回答 4

4

很晚才回到这一点,但是这里的答案都没有对我有用。我的一些数据库模型需要使用“tdb”,并且将以下代码添加到每个类中以使其自动发生:

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

我感谢大家一路上的建议!

于 2009-09-23T07:24:58.983 回答
3

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

Zend_Db_Table_Abstract::setDefaultAdapter($adapter);

现在,您的所有 Table 对象将默认使用您的适配器。

注意:在线文档有时并不明显,因此您检查的第二个最佳位置是此处的 API:http: //framework.zend.com/apidoc/core/

于 2009-05-07T03:17:37.857 回答
1

您可以在构造函数中将类变量 $_db 设置为正确的适配器。

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

$this->_db = $adapter1;

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

于 2009-05-06T21:21:13.390 回答
1

可以使用 init 函数,不使用它Zend_Db_Adapter_Abstract,可以在你的类中使用来设置需要做的任何事情。_setAdapter接受一个命名注册表项的字符串。

public function init()
{
    $this->_setAdapter('tdb');
}
于 2010-08-15T22:42:42.157 回答