如何从Zend中的外部数据库获取记录?

问题描述

| 我正在为数据库使用application.ini中的以下配置;
resources.db.adapter = \"Mysqli\"
resources.db.params.host = \"localhost\"
resources.db.params.username = \"root\"
resources.db.params.password = \"root\"
resources.db.params.dbname = \"dbname\"
resources.db.params.charset = \"utf8\"
之后,使用标准的Model / Mapper / DbTable类访问数据库,如下所示 现在,我想访问其他一些数据库,但是具有与本地数据库相同的表结构。如何在要显示其他数据库数据的特定控制器/操作上切换数据库。 谢谢。     

解决方法

您可以使用Zend_Application_Resource_Multidb 在标题
Different user/host
下有一个用法示例。 关于Stackoverflow的类似问题 无法使用Zend Framework连接到外部数据库,但是mysql connect可以工作。 编辑:我还发现,即使我的模型中的以下几行从ѭ2继承而来,它也未连接到远程数据库。
protected $_schema  = \'otherdb\';
protected $_adapter = \'db_remote\'; 
所以我在Zend_Db_Table_Abstract中检查了这个功能
protected function _setupDatabaseAdapter()
    {
        if (! $this->_db) {
            $this->_db = self::getDefaultAdapter();
            if (!$this->_db instanceof Zend_Db_Adapter_Abstract) {
                require_once \'Zend/Db/Table/Exception.php\';
                throw new Zend_Db_Table_Exception(\'No adapter found for \' . get_class($this));
            }
        }
    }
如果对您而言相同,则将以下行添加到构造函数中:
public function __construct() {
    $front = Zend_Controller_Front::getInstance();
    $bootstrap = $front->getParam(\'bootstrap\');
    $resource = $bootstrap->getPluginResource(\'multidb\');
    $this->_db = $resource->getDb(\'chdpg\');
}
    

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...