【发布时间】:2011-04-01 10:49:13
【问题描述】:
我尝试构建一个小功能,用于控制器中即时切换数据库,我必须只使用一个数据源。
在我的 database.php 上:
function __construct() {
$server = Configure::read('Server');
if(!empty($server['database'])) $this->local['database'] = $server['database'];
$this->default = $this->{$server['datasource']};
}
用于根据服务器配置切换数据库。效果很好。
我试图建立这个:
/**
* Connects to specified database
*
* @param array $config Server config to use {datasource:?, database:?}
* @return array db->config on success, false on failure
* @access public
*/
function dbConnect($config = array()) {
ClassRegistry::init('ConnectionManager');
//debug($config['datasource']);
//$dbInstance =& ConnectionManager::getInstance();
//$dbInstance->config->{$config['datasource']}['database'] = $config['database'];
$db =& ConnectionManager::getDataSource($config['datasource']);
$db->disconnect();
$db->cacheSources = false;
$db->config['database'] = $config['database'];
$db->config['persistent'] = false;
debug($db->config);
$db->connect();
if(!$db->isConnected()) {
$this->error('!$db->isConnected()');
return false;
}
return $db->config;
}
但遗憾的是,一切似乎都正常,但我总是使用 $this->Player->find('list') 从同一个数据库获取数据。我尝试了$this->Player->cacheQueries = false;,但没有成功。
【问题讨论】:
标签: php database cakephp cakephp-1.3