Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 在CakePHP中使用$useDbConfig在只读和写式数据库之间切换?_Mysql_Model_Cakephp 2.2 - Fatal编程技术网

Mysql 在CakePHP中使用$useDbConfig在只读和写式数据库之间切换?

Mysql 在CakePHP中使用$useDbConfig在只读和写式数据库之间切换?,mysql,model,cakephp-2.2,Mysql,Model,Cakephp 2.2,我有一个主从数据库。为了平衡一些负载,我希望所有的插入/更新查询都转到主查询,所有的选择查询都转到从查询(因为如果不把它弄乱,就无法写入从查询)。我在database.php中定义了数据库。这就是我尝试切换的方式: 在AppModel.phpbeforeFind()中,我正在设置: $this->useDBConfig = 'readOnly'; $this->useDBConfig = 'writeOnly'; 在beforeSave()中,我正在设置: $this->u

我有一个主从数据库。为了平衡一些负载,我希望所有的插入/更新查询都转到主查询,所有的选择查询都转到从查询(因为如果不把它弄乱,就无法写入从查询)。我在database.php中定义了数据库。这就是我尝试切换的方式:

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

$this->useDBConfig = 'readOnly';
$this->useDBConfig = 'writeOnly';
beforeSave()中,我正在设置:

$this->useDBConfig = 'readOnly';
$this->useDBConfig = 'writeOnly';
然而,在深入研究之后,我想知道useDBConfig是否是数据库的一对一关系模型。这意味着,useDBConfig可能只用于将单个模型指向单个数据库,因为这并不总是像我预期的那样工作。有时,插入/更新将尝试在具有只读权限的只读服务器上运行,但失败


如果是这种情况,如何更改CakePHP应用程序以将请求发送到相应的数据库?我应该以不同的方式执行此操作吗?

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

基本上,您可以覆盖所有保存方法(save、saveField、saveAssociated、saveAll、UpdateAll、delete、deleteAll等)并在两个setDatasource调用之间封装父调用。

太棒了!我不知道从何处开始。两个快速问题:1)您是否在任何较新版本的CakePHP上尝试过此方法?我想我们现在在2.3.7上。2) 您如何处理生产/开发凭证?两个分贝的设置会变得棘手吗?@Emerson是的。我目前正在2.3.7上运行此功能。如果您需要有关生产/开发配置环境的帮助,您可以在此处查看:@chuckburges:您提供的帖子链接已过期。你能更新链接吗?太棒了!我不知道从哪里开始。两个简短的问题:1)您在CakePHP的任何更新版本上尝试过这个吗?我想我们现在在2.3.7上。2) 您如何处理生产/开发凭证?两个分贝的设置会变得棘手吗?@Emerson是的。我目前正在2.3.7上运行此功能。如果您需要有关生产/开发配置环境的帮助,您可以在此处查看:@chuckburges:您提供的帖子链接已过期。你能更新链接吗??