我有一个正在运行的代码但是当我切换到不同的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;
});
它正在工作,但在进入不同的路线后,它回到默认连接。
答案 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(...);