【问题标题】:Laravel 8 Change database connection globally in the runtimeLaravel 8 在运行时全局更改数据库连接
【发布时间】:2021-10-22 16:58:21
【问题描述】:

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

我有两个 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 版本:8.59.0
  • PHP 版本:8.0.10

【问题讨论】:

  • 你的意思是“写操作”而不是“正确的操作”?
  • 是的,拼写错误。 @JamesZ

标签: php laravel laravel-8


【解决方案1】:

我找到了可行的解决方案。

$readOnlyConfig = config('database.connections.mysql_readonly');
Config::set('database.connections.mysql', $readOnlyConfig);
DB::purge();

【讨论】:

  • 是的,就可以了。我真希望他们选择一个不同于 purge 的函数名称,因为前几次有点吓人。
猜你喜欢
  • 2013-09-29
  • 1970-01-01
  • 1970-01-01
  • 2018-03-07
  • 1970-01-01
  • 2020-08-19
  • 2017-12-26
  • 2021-05-12
  • 2021-09-11
相关资源
最近更新 更多