thinkphp配置mysql读写分离,单独的事务中肯定是无法进行主从库切换的,在网上看了相关的例子都挺麻烦,需要重写事务启动提交回滚相关方法,改动风险太大,直接让事务走主库查询就可以了
解决:
Mysql类重写Driver父类连接方法
ThinkPHP/Library/Think/Db/Driver/Mysql.class.php
/**
* 事务中强行走主库查询
* @param bool $master
*/
protected function initConnect($master = true)
{
if ($this->transTimes > 0) {
$master = true;
}
parent::initConnect($master);
}