我的需求很简单,我找到了很多解决方案,但没有一个适合我。
我有两个MySQL数据库,其中一个将发生所有写操作,并且该数据库有一个副本,该副本是只读的。我正在创建一个中间件,如果请求是GET,它应该使用只读数据库,否则主数据库。
我已经试过了:
DB::disconnect();
Config::set('database.default', 'mysql_readonly');
DB::reconnect('mysql_readonly');
Config::set('database.default', 'mysql_readonly');
DB::purge('mysql_readonly');
DB::disconnect();
Config::set('database.default', 'mysql_readonly');
DB::connection('mysql_readonly');
所有的解决方案都不起作用。
- Laravel Version: 8.59.0
- PHP版本:8.0.10
我找到了可行的解决方案。
$readOnlyConfig = config('database.connections.mysql_readonly');
Config::set('database.connections.mysql', $readOnlyConfig);
DB::purge();