gpt4 book ai didi

php - CakePHP 即时切换数据库(使用相同的数据源)?

转载 作者:可可西里 更新时间:2023-11-01 12:49:26 27 4
gpt4 key购买 nike

我试图构建一个小函数,用于在 Controller 中动态切换数据库,我必须只使用一个数据源。

在我的 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; 但没有成功。

最佳答案

使用它使其工作(即时创建新连接):

$newDbConfig = $this->dbConnect($serverConfig);
$this->Model->useDbConfig = $newDbConfig['name'];
$this->Model->cacheQueries = false;

与:

/**
* 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');

$nds = $config['datasource'] . '_' . $config['database'];
$db =& ConnectionManager::getDataSource($config['datasource']);
$db->setConfig(array('name' => $nds, 'database' => $config['database'], 'persistent' => false));
if($ds = ConnectionManager::create($nds, $db->config)) return $db->config;
return false;

}

关于php - CakePHP 即时切换数据库(使用相同的数据源)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5512327/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com