2

我需要为 1 个用户使用另一个数据库连接。

首先,我在 config/database.php 文件中创建了另一个连接:

'mysqltest' => [
    'driver' => 'mysql',
    //...
],

有用。我试过这样的东西Model::on('mysqltest')->all()
现在我想在项目中到处更改连接,所以我想在用户登录后更改它。
我正在尝试这个没有成功:

protected function authenticated(Request $request, $user)
{
    //
    if ($user->user_id == 1) {
        //DB::purge('mysqltest');
        //DB::reconnect('mysqltest');
        DB::setDefaultConnection('mysqltest');
    }
}
4

1 回答 1

0

例如创建中间件

php artisan make:中间件 SelectDB

    <?php

    namespace App\Http\Middleware;

    use Closure;
    use Illuminate\Http\Request;
    use Illuminate\Support\Facades\DB;

    class SelectDB
    {

        public function handle(Request $request, Closure $next)
        {
            if (auth()->id() == 1) {
                DB::setDefaultConnection('mysqltest');
            }

            return $next($request);
        }
    }

在 App\Http\Kernel 中添加中间件

    protected $middlewareGroups = [
            'web' => [
                \App\Http\Middleware\SelectDB::class,
                \App\Http\Middleware\EncryptCookies::class,
             ...
于 2020-10-08T00:19:12.743 回答