我为每个网址提供了一个包含唯一数据库的应用程序,类似于以下答案:CakePHP - database config based on URL
工作正常,但我还需要在每个数据库上运行一些控制台命令。我想使用参数,所以我会使用这样的东西:
cake consoleCommand databaseConfig
理想情况下,这会将数据库设置为' databaseConfig'对于整个应用程序,然后运行' consoleCommand'。我遇到的问题是在运行consoleCommand之前加载并运行DATABASE_CONFIG类。我已经尝试过在控制台中使用$ this-> Model-> setDataSpource之类的东西,但是当时模型似乎也没有在控制台中可用。
我已经玩弄了设置配置设置,只是在访问模型之前查看了它,但它不能在__construct()上工作,所以我不得不把它绑在所有的之前*方法。这对我来说似乎有点困难:
class AppModel extends Model
{
private function _before() {
$conn = Configure::read('dbConnection');
if(!empty($conn))
$this->setDataSource($conn);
}
public function beforeValidate($options = array()) {
$this->_before();
parent::beforeValidate();
}
public function beforeDelete($bool = true) {
$this->_before();
parent::beforeDelete($bool);
}
public function beforeFind($queryData) {
$this->_before();
parent::beforeFind($queryData);
}
public function beforeSave($options=array()) {
$this->before();
parent::beforeSave($options);
}
}
我很欣赏对此的任何见解。