CakePHP如何动态分配数据库连接

CakePHP如何动态分配数据库连接,php,cakephp,configuration,constants,Php,Cakephp,Configuration,Constants,我有一个叫做CLIENT_URL的常量值 在boostrap上: $clienturl = explode('/', $_SERVER['REQUEST_URI']); define("CLIENT_URL",$clienturl[2]); 我已经调试过了,它得到了,例如,“client1”或“client2”,等等。 我需要在定义配置数组时使用该值,例如: 关于database.php class DATABASE_CONFIG { var $default = array( 'd

我有一个叫做CLIENT_URL的常量值

在boostrap上:

$clienturl = explode('/', $_SERVER['REQUEST_URI']);
define("CLIENT_URL",$clienturl[2]);
我已经调试过了,它得到了,例如,“client1”或“client2”,等等。 我需要在定义配置数组时使用该值,例如:

关于database.php

class DATABASE_CONFIG {

var $default = array(
    'datasource' => 'Database/Mysql',
    'persistent' => false,
    'host' => 'localhost',
    'login' => '*****',
    'password' => '****',
    'database' => 'client3',
    'prefix' => ''
 );    

var $clientdb = array(
    'datasource' => 'Database/Mysql',
    'persistent' => false,
    'host' => 'localhost',
    'login' => '****',
    'password' => '****',
    'database' => 'client3',
    'prefix' => ''
);

public function __construct() {
    debug('constant value: '.CLIENT_URL);
    debug($this->default['database']); 
    $this->default['database'] = CLIENT_URL; // This line does nothing !!
    //$this->clientdb['database'] = CLIENT_URL; // This lines prevent connection, error: Database connection "Mysql" is missing, or could not be created !!
    $this->default = $this->clientdb;
    debug($this->default['database']); 

}
};
然而,数据库保持不变,它保持上面的初始值。 其实我可以做到:

$this->default['database'] = 'whatever';
它甚至不会试图找到“任何”数据库;这项任务似乎缺少一些重新加载或其他内容

在u_构造的赋值之后

我已经调试过了

debug($this->default['database']); 
作业之前和之后,并且不会发生变化。 这样做只会改变:

$this->clientdb['database'] = CLIENT_URL; // Instead of $this->default['database'] = CLIENT_URL;
但随后连接失败

请注意,该应用程序确实连接到最开始的“client3”中给出的数据库,只是不切换。 我通过一个find来检查数据库,它总是从同一个数据库返回相同的记录,没有开关

$options = array('conditions' => array('User.id' => 1));
$clientArray = $this->User->find('first', $options);

谢谢你的指点。

你需要这样做

class DATABASE_CONFIG {

var $client1db = array(
    'datasource' => 'Database/Mysql',
    'persistent' => false,
    'host' => 'localhost',
    'login' => '*****',
    'password' => '*****',
    'database' => 'client1',    
    'prefix' => ''
);


public function __construct() {
    $this->default = $this->clientdb;
    $this->default['database'] = CLIENT_URL;
}

};    

谢谢你@Moyed Ansari。但是,数据库保持不变,请参见编辑。您可以在最后一行后调试$this->default以查看更改。第二,您使用的是同一个连接吗?我刚刚调试过,它不会显示更改;我有不同的数据库来测试检索到的记录。请参见编辑。你有什么建议?谢谢。尝试调试调试$this->default['database'];谢谢我在分配之前和之后调试了$this->default['database'],它保持不变。请参见编辑。我失去了希望-