swoft有提供两种主从方式,“手动档模式”与“自动档模式”
手动档模式
手动模式需要xxx.com?db=1、xxx.com?db=2、xxx.com?db=3 这种方式来切换1、2、3数据库。操作权在用户手上。使用并不太方便
自动档模式:推荐使用
1.bean配置
#不能写成db_rw
'db' => [
'charset' => 'utf8mb4',
'prefix' => 'z_',
'config' => [
'collation' => 'utf8mb4_unicode_ci',
'strict' => true,
'timezone' => '+8:00',
'modes' => 'NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES'
],
'writes' => [
[
'dsn' => 'mysql:dbname=iot2com;host=127.0.0.1:3306',
'username' => 'xxx',
'password' => '123456',
]
],
'reads' => [
[
'dsn' => 'mysql:dbname=iot2com1;host=127.0.0.1',
'username' => 'xxx',
'password' => '123456',
],
[
'dsn' => 'mysql:dbname=iot2com2;host=127.0.0.1',
'username' => 'xxx',
'password' => '123456',
]
]
],
2.控制器调用
读:
/**
* @RequestMapping()
* */
public function t30(Request $request){
$result = DB::table('log_system')->first();
print_r($result);
}
每次刷新页面都显示不同数据,实现自动切换库,数据显示如下
写:
/**
* @RequestMapping()
* */
public function t33(){
$data= [
'title'=>'44444'
];
$result = DB::table('log_system')->insert($data);
print_r($result);
}
自动插入主库iot2com
总结,自动档模式,配置好bean,在使用增、更、删 会自动切换到writes库,查会切换到reads库。完美实现切库动作