Laravel 8在运行时全局更改数据库连接



我的需求很简单,我找到了很多解决方案,但没有一个适合我。

我有两个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();

相关内容

  • 没有找到相关文章

最新更新