在Laravel 5.4中更改数据库

时间:2018-04-02 01:10:22

标签: mysql database laravel-5.4

我有一个正在运行的代码但是当我切换到不同的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 个答案:

答案 0 :(得分:3)

  

它正在发挥作用但是在进入不同的路线之后又回到了它   默认连接。

这是因为,.env文件未更改,其中存储了所有应用程序的配置。

在改变之前..

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

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

访问/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(...);