我目前正在处理一个"飞行交换连接的多数据库"项目.
所以我最终做的是以下内容:
$connectionName = uniqid();
\Config::set('database.connections.' . $connectionName, [/** db options **/]);
\Artisan::call('migrate', ['--database' => $connectionName]);
Run Code Online (Sandbox Code Playgroud)
要么
$connectionName = uniqid();
\Config::set('database.connections.' . $connectionName,[/** db options **/]);
$user = new User();
$user->setConnection($connectionName);
$user->first_name = 'Daisy';
$user->last_name = 'Demo';
$user->is_not_being_ignored_by_santa_this_year = 0;
$user->email = //and so so on
$user->save();
Run Code Online (Sandbox Code Playgroud)
对于Artisan调用,我有点理解为什么Laravel需要引用字符串中的连接,保存在配置数组中.
但是在Eloquent Model本身上,我发现将数据库连接编写到配置数组中有点麻烦.所以它可以通过模型中的"Singleton方法"\ Config :: get()..来获取.
有没有更优雅的东西,我可以直接注入配置,而不必将其写入一些超级全球?
或者我错过了什么?