gpt4 book ai didi

php - 动态更改默认连接

转载 作者:行者123 更新时间:2023-11-29 15:23:47 26 4
gpt4 key购买 nike

我在 Laravel 应用程序中有一个中间件,可以动态更改数据库连接:

public function handle($request, Closure $next)
{
Config::set('database.default', 'mysql_'.$request->segment(1));
DB::reconnect('mysql_'.$request->segment(1));
app()->setLocale($request->segment(1));
if (Auth::check() && session('locale') != $request->segment(1))
{
Auth::logout();
return redirect('login');
}
return $next($request);
}

这项工作,默认连接发生了变化,但模型连接仍然是旧的。

在我的模型转储中:

“mysql_es”是由 url 段 (/es) 更改的默认连接

“mysql_it”是中间件更改之前的旧默认连接。

谁能告诉我为什么?

谢谢

最佳答案

您需要做的是清除连接。

// Purge the current database connection, thus making Laravel get the default values all over again...
DB::purge('default');

// Now set the new connection
config(['database.default' => 'mysql_it']);

// ! Reconnect and close previous connection
DB::reconnect('default');

// Ping the database.
// This will throw an exception in case the database does not exists or the connection fails
Schema::connection('default')->getConnection()->reconnect();

关于php - 动态更改默认连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59182519/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com