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.

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 9

xdebug或者dd打一下应该就知道了

1年前 评论
tangyi90 (楼主) 1年前
wozailu 1年前

直接 DB::setDefaultConnection($name) 不就好了吗? :hushed:

1年前 评论
tangyi90 (楼主) 1年前

modle 里用$this->setConnection() 呢?

1年前 评论

会不会是登陆后没有走这个方法 :joy:又或者是哪个地方马虎了。 这个写法没有太大的问题。server_code serverCode 优先级?直接在中间价dump一下

1年前 评论
empty($request->server_code) == false

真绕 :joy:

1年前 评论

empty(0) = true ? 会不会是传的这个code?

1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!