1

我有一个应用程序,每个 URL 都有一个唯一的数据库,类似于这个答案:CakePHP - database config based on URL

这很好用,但我还需要在每个数据库上运行一些控制台命令。我想使用参数,所以我会使用这样的东西:

cake consoleCommand databaseConfig

理想情况下,这会将整个应用程序的数据库设置为“databaseConfig”,然后运行“consoleCommand”。我遇到的问题是 DATABASE_CONFIG 类在运行 consoleCommand 之前加载并运行。我当时尝试在控制台中使用 $this->Model->setDataSpource 之类的东西,但此时控制台中似乎也没有 Model 可用。

我玩弄了设置配置设置,只是在访问模型之前查找它,但它不适用于 __construct(),所以我不得不将它绑定到所有 before* 方法中。这对我来说似乎有点混乱:

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);
}

}

我很感激对此的任何见解。

4

0 回答 0