gpt4 book ai didi

php - 在 Eloquent 模型上还有另一种方法 "setConnection"吗?

转载 作者:可可西里 更新时间:2023-11-01 06:28:30 25 4
gpt4 key购买 nike

我目前正在处理“多数据库动态交换连接”之类的项目。

所以我最终要做的是:

$connectionName = uniqid();
\Config::set('database.connections.' . $connectionName, [/** db options **/]);
\Artisan::call('migrate', ['--database' => $connectionName]);

$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();

对于 Artisan 调用,我有点理解为什么 Laravel 需要引用字符串中的连接,保存在配置数组中。

然而,在 Eloquent 模型本身,我发现将我的数据库连接写入配置数组有点麻烦。所以它可以通过模型中的“单例方法”\Config::get().. 来获取。

有没有更优雅的东西,我可以直接注入(inject)配置,而不必将其写入一些 super 全局?

还是我遗漏了什么?

最佳答案

你可能会过得更好creating a configuration array for each connection然后您可以通过指定要使用的连接轻松地在连接之间切换。

如果您需要在同一个模型上使用多个连接,您可以使用 on method :

所以它会像 User::on('dbconnection2')->find(1)

如果你只是想为不同的模型使用不同的连接,你可以在模型上设置 protected $connection 属性:

class User extends Model
{
protected $connection = 'dbconnection2';
}

希望对您有所帮助。

关于php - 在 Eloquent 模型上还有另一种方法 "setConnection"吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41272826/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com