laravel 动态数据库连接后用户登陆问题,
有多个用户数据库,登陆后动态切换到指定数据库,
数据库1:DB_0
数据库2:DB_1
创建动态连接中间件:
public function handle(Request $request, Closure $next)
{
if (Auth::check()) {
$server_code = Cache::get('database_' . Auth::user()->memb___id);
} elseif (empty($request->server_code) == false) {
$server_code = $request->server_code;
} elseif (empty($request->serverCode) == false) {
$server_code = $request->serverCode;
}
if (empty($server_code) == false) {
\DB::disconnect(); // 断开连接
\DB::purge('MuOnline'); // 清理缓存
\Config::set('database.connections.MuOnline.database', 'MuOnline_' . $server_code);
\DB::reconnect(); // 重新连击
}
return $next($request);
}
// ================================================
登陆界面有选择数据库选项
我选择数据库1登陆成功后,现在出现的问题就是连接的是数据库2去了,我明明选择的是数据库1.
xdebug或者dd打一下应该就知道了
直接
DB::setDefaultConnection($name)
不就好了吗? :hushed:modle 里用$this->setConnection() 呢?
会不会是登陆后没有走这个方法 :joy:又或者是哪个地方马虎了。 这个写法没有太大的问题。server_code serverCode 优先级?直接在中间价dump一下
真绕 :joy:
empty(0) = true ? 会不会是传的这个code?