Laravel 8 在运行时全局更改数据库连接
Laravel 8 Change database connection globally in the runtime
我的要求很简单,我找到了很多解决方案,但是 none 对我有用。
我有两个 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');
None 个解决方案有效。
- Laravel版本:8.59.0
- PHP版本:8.0.10
我找到了可行的解决方案。
$readOnlyConfig = config('database.connections.mysql_readonly');
Config::set('database.connections.mysql', $readOnlyConfig);
DB::purge();
我的要求很简单,我找到了很多解决方案,但是 none 对我有用。
我有两个 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');
None 个解决方案有效。
- Laravel版本:8.59.0
- PHP版本:8.0.10
我找到了可行的解决方案。
$readOnlyConfig = config('database.connections.mysql_readonly');
Config::set('database.connections.mysql', $readOnlyConfig);
DB::purge();