我有一个名为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';
它甚至不会尝试找到'无论'数据库;看来这个任务是缺少一些重载还是什么?
在__construct上分配后,
我已经调试了
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);
感谢您的任何指示。
答案 0 :(得分:0)
你需要这样做
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;
}
};