laravel - Laravel:将模型/行从一个连接复制到另一个
问题描述
我想将一个雄辩的模型从一个连接复制到另一个连接。
到目前为止,我这样做的方式是:
$users = User::on('connection1')->where('tenant', 'foo')->get();
User::on('connection2')->insert($users->toArray());
这在大多数情况下都有效。但在某些情况下,这不起作用。例如:
- 当模型具有
$hidden
属性时 - 当
toArray
模型的方法被覆盖时
将某些行简单地复制到另一个连接的可靠方法是什么?
解决方案
我想我找到了 $hidden 属性和覆盖 toArray 方法的解决方案
$users = User::on('connection1')->where('tenant', 'foo')->get();
foreach ($users as $user) {
$usersArray[] = $user->getAttributes();
}
User::on('connection2')->insert($usersArray);
如果您使用的是 mySql,我建议使用批量插入:
https://www.geeksengine.com/database/data-manipulation/bulk-insert.php
推荐阅读
- c - 关于在 if 条件和代码生成中使用 #define 值的问题:debug vs release build
- python - 如何使用 numpy 标记图像以进行训练
- visual-studio-code - 未绑定的类路径容器:带有处理的项目“”中的“JRE 系统库 [adoptopenjdk-11]”
- asp.net-mvc - 如何获取 cookie 时间并执行自动登录
- spring - 请求“GET /sw.js”与“POST /login Spring Security”不匹配
- python-3.x - 自动打开文件夹中新添加的文件的脚本
- typescript - react-native typescript babel-plugin-module-resolver 在嵌套文件夹中找不到模块
- c++ - Json::Value 作为私有类成员
- c++ - 输入是一个三位数字。打印其数字的算术平均值
- python - 如何在 python-binance 中获取多个硬币的历史数据?