在CakePHP v2.x.x的Controller中,所有使用模型的$ useDbConfig

时间:2015-05-21 06:46:43

标签: php database cakephp model-view-controller controller

我目前正在为Public $uses = array('Lead', 'User', 'Source', ...)中定义的所有模型编写单独的行,以便在Controller中使用$useDbConfig

$this->Lead->useDbConfig = $newDbConfig['name'];
$this->User->useDbConfig = $newDbConfig['name'];
$this->Source->useDbConfig = $newDbConfig['name'];

但我想立即为所有$useDbConfig $uses设置->useDbConfig。 使用foreach循环似乎无法实现。有没有办法实现它? Cake v2.5.7

2 个答案:

答案 0 :(得分:0)

假设您总是希望您的潜在客户,用户,模型使用备用数据库配置,我采用的方法是为这些模型创建一个新的AppModel,以更改useDbConfig并扩展AppModel : -

class AltAppModel extends AppModel {

    public $useDbConfig = 'your-alt-db-config';

}

然后,对于需要替代配置的模型,扩展新的AppModel

class Lead extends AltAppModel {

}

显然使用比AltAppModel更好的命名约定,它更适合您的项目。 : - )

<强>更新

不确定这是否有效,但根据您的评论,您可以尝试这样的事情: -

class AppModel extends Model {

    public function changeDbConfig($config) {

        $this->useDbConfig = $config;

        // Update the belongs to associates
        foreach ($this->belongsTo as &$Model) {        
            $Model->useDbConfig = $config;        
        }
        // Then repeat for hasOne and hasMany...

    }

}

然后,当您需要动态更改$useDbConfig来电时: -

$this->Lead->changeDbConfig('your-alt-db-config');

我不是100%确定这会起作用,因为Cake可能不会让你以这种方式更新这些。动态变化$useDbConfig对我来说有点古怪。如果你根据应用程序设置更改它,最好在bootstrap中更改它。

答案 1 :(得分:0)

是的,您可以在Controller数组中进行迭代,例如:

uses