代码之家  ›  专栏  ›  技术社区  ›  Martney Acha

更改Laravel 5.4中的数据库

  •  1
  • Martney Acha  · 技术社区  · 7 年前

    我有一个代码正在工作,但当我切换到不同的URL时,我建立的连接又回到了默认连接,我缺少了什么?

    Route::get('/change-database', function () {
        DB::purge('mysql');
    
        Config::set('database.connections.test.driver', 'mysql');
        Config::set('database.connections.test.host', 'localhost');
        Config::set('database.connections.test.username', 'root');
        Config::set('database.connections.test.password', '');
        Config::set('database.connections.test.database', 'fdis_two');
    
        Config::set('database.default', 'test');
        DB::reconnect('test');
    
    
        $connection= DB::connection()->getDatabaseName();
        return $connection;
    });
    

    它正在工作,但在转到不同的路由后,它将返回到默认连接。

    1 回复  |  直到 7 年前
        1
  •  4
  •   halfer    7 年前

    它正在工作,但在走了不同的路线后 默认连接。

    这是因为 .env 不会更改存储应用程序所有配置的文件。

    更改前。。

    DB_CONNECTION=mysql
    DB_HOST=127.0.0.1
    DB_PORT=3306
    DB_DATABASE=dbName
    DB_USERNAME=username
    DB_PASSWORD=password
    

    在同一路线中,尝试编辑 。环境 文件,然后尝试访问所有其他路由。

    在访问 /change-database 路线,应反映:

    DB_CONNECTION=mysql
    DB_HOST=127.0.0.1
    DB_PORT=3306
    DB_DATABASE=newDbName
    DB_USERNAME=newUsername
    DB_PASSWORD=newPassword
    

    否则,您必须修改应用程序的代码以匹配以下内容: Documentation

    使用多个连接时,您可以通过访问每个连接 上的连接方法 DB 外观传递给的名称 连接方法应与列出的连接之一相对应 在您的 config/database.php 配置文件:

    $users = DB::connection('foo')->select(...);