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

标签 laravel laravel-5 eloquent laravel-5.7

我想将一个 Eloquent 模型从一个连接复制到另一个连接。

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

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

这在大多数情况下都有效。但在某些情况下这不起作用。例如:
  • 当模型有 $hidden属性
  • toArray模型的方法被覆盖

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

    最佳答案

    您可以利用 setConection() eloquent 模型上的方法,如下所示:

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

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

    关于Laravel:将模型/行从一个连接复制到另一个连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56800085/

    相关文章:

    php - Laravel 5.8 : How to resolve auth()->user() inside Global Scope's apply method?

    javascript - Ajax 的成功和 Laravel

    php - 如何在 php artisan make :model command 中使用 Jenssegers\Mongodb\Eloquent\Model 而不是 Illuminate\Database\Eloquent\Model

    sql - Laravel - 播种大型 SQL 文件

    php - Laravel _ 如何将查询注入(inject) Auth::user()

    php - Laravel 4 嵌套 Controller 和路由

    php - Laravel:本地和生产时间不匹配

    laravel - 验证整数数组

    php - laravel morphToMany 在数据透视表中有附加字段

    php - 在 Laravel 中按数据透视表 created_at 排序