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 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 9

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

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

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

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

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

2年前 评论

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

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

真绕 :joy:

2年前 评论

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

2年前 评论