使用CakePHP中的$ useDbConfig在readOnly和writeOnly数据库之间切换?

时间:2012-08-30 21:29:41

标签: mysql model cakephp-2.2

我有一个主从数据库。为了平衡一些负载,我希望我的所有INSERT / UPDATE查询都转到Master并且我的所有SELECT查询都转到slave(因为你不能在不搞乱的情况下写入slave)。我有在database.php中定义的数据库。这就是我尝试切换的方式:

在AppModel.php beforeFind()中,我正在设置:

$this->useDBConfig = 'readOnly';

beforeSave()中,我正在设置:

$this->useDBConfig = 'writeOnly';

然而,在深入研究之后,我想知道useDBConfig是否是一对一的关系模型到数据库。意思是,也许useDBConfig仅用于将单个模型指向单个数据库,因为这并不总是像我期望的那样工作。有时,INSERT / UPDATE将尝试使用readOnly权限在readOnly上运行并失败。

如果是这种情况,如何更改CakePHP应用程序以将请求发送到适当的数据库?我应该以不同的方式做这件事吗?

1 个答案:

答案 0 :(得分:1)

基本上,你覆盖了AppModel中的所有保存方法(save,saveField,saveAssociated,saveAll,UpdateAll,delete,deleteAll等),并在两个setDatasource调用之间封装了父调用。