【发布时间】:2018-12-19 19:48:46
【问题描述】:
我正在使用 laravel/eloquent 重写部分遗留软件。
我对典型的 eloquent 的理解很好,并且我在 laravel 中做过一些项目,但对于遗留代码并没有那么多。
我正在尝试用 eloquent 来创建 79 行:
INSERT IGNORE INTO `ps_module_shop` (`id_module`, `enable_device`, id_shop) (SELECT `id_module`, `enable_device`, 555 FROM ps_module_shop WHERE `id_shop` = 1);
我读到您只能使用 model::insert 进行批量插入,但我不确定如何使用此查询来执行此操作,而不是纯 sql。
这就是我现在的做法,但是对于这个查询来说,原始 sql 感觉更优雅:
$blkInsert = [];
$tplModuleShop = ModuleShop::where('id_shop', 1)->get();
foreach($tplModuleShop as $mshop) {
$blkInsert[] = [
'id_module' => $mshop->id_module,
'enable_device' => $mshop->enable_device,
'id_shop' => $shop->id_shop,
];
}
ModuleShop::insert($blkInsert);
注意:我知道这是一个数据透视表,但它是使用复合键的遗留数据库,所以我决定将其视为自己的模型。
【问题讨论】: