我使用Laravel 5.5,我需要动态地更改数据库,
例如,有两个数据库,db1
和db2
,还有每个数据库中的表articles
。Laravel:未定义指数:司机
现在我想从db1
复制文章db2
,
在.env
文件,当前数据库是db1
:
DB_DATABASE=db1
我想复制记录时,动态地改变它,我试着做它是这样的:
public function test()
{
$articles=Article::all();
Config::set("database.connections.mysql", [
"host" => "127.0.0.1",
"database" => "db2",
"username" => "root",
"password" => ""
]);
//DB::purge('mysql'); //this line exists or not,it has the same error.
DB::table('articles')->insert($articles);
dd('ok');
}
但有一个错误:
Undefined index: driver
我有很多数据库,所以我不想在.env
文件中更改它。
我该怎么办?
更新:
在config/database.php
它有两个项目:
'default' => env('DB_CONNECTION', 'mysql'),
'connections' => [
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
],
],
,我尝试
Config::set("database.connections.mysql", [
'mysql' => [
"host" => "127.0.0.1",
"database" => "db2",
"username" => "root",
"password" => ""
]
]);
错误依然存在。
你有没有在** config/database.php **中检查''default'=> env('DB_CONNECTION','mysql')'? –
@Sagar Gautam它有这个项目。 – zwl1619
一种方法是使用DB :: connection()创建与数据库的新连接。 –