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

Stu*_*ent 2 php database zend-framework

我在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"
Run Code Online (Sandbox Code Playgroud)

之后,使用标准型/映射器/ DBTABLE类访问数据库,像这样

现在我想访问一些其他数据库,但具有与本地数据库相同的表结构.如何切换我想要显示其他数据库数据的特定控制器/操作的数据库.

谢谢.

Oza*_*ray 6

您可以使用Zend_Application_Resource_Multidb

还有就是它使用的例子在这里,标题下Different user/host.

类似的问题Stackoverflow

  1. 无法使用Zend Framework连接到外部数据库但是mysql connect工作正常.

编辑:我还发现,即使我从我的模型中继承了以下行,Zend_Db_Table_Abstract也没有连接到远程数据库.

protected $_schema  = 'otherdb';
protected $_adapter = 'db_remote'; 
Run Code Online (Sandbox Code Playgroud)

所以我在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));
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

如果它与您相同,请将以下行添加到构造函数中:

public function __construct() {
    $front = Zend_Controller_Front::getInstance();
    $bootstrap = $front->getParam('bootstrap');
    $resource = $bootstrap->getPluginResource('multidb');
    $this->_db = $resource->getDb('chdpg');
}
Run Code Online (Sandbox Code Playgroud)