Laravel:将模型/行从一个连接复制到另一个连接

Yah*_*din 5 laravel eloquent laravel-5 laravel-5.7

我想将一个雄辩的模型从一个连接复制到另一个连接。

到目前为止,我这样做的方式是这样的:

$users = User::on('connection1')->where('tenant', 'foo')->get();
User::on('connection2')->insert($users->toArray());
Run Code Online (Sandbox Code Playgroud)

这在大多数情况下都有效。但在某些情况下这不起作用。例如:

  • 当模型具有$hidden属性时
  • toArray模型的方法被覆盖时

简单地将某些行复制到另一个连接的可靠方法是什么?

Ptr*_*Ton 0

setConection()您可以在 Eloquent 模型上利用该方法,如下所示:

$users = User::on('connection1')->where('tenant', 'foo')->get();
foreach ($users as $user) {
   $user->setConnection('connection2');
   $user->save();
}
Run Code Online (Sandbox Code Playgroud)

我在另一个 stackoverflow 问题中找到了这个