我目前正在为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
答案 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