一次复制多个模型

时间:2017-10-06 10:31:44

标签: php laravel laravel-4

我正在使用Laravel 4.2。

如果我想复制模型,我可以使用以下内容:

$newModel = $currentModel->replicate();
$newModel->save();

但是我在循环中有这个,就像这样:

foreach ($this->models as $currentModel) {
    $newModel = $currentModel->replicate();
    $newModel->save();
}

这显然导致了几个DB调用。我想要更高效的东西,所以我可以遍历我的模型,然后在循环之外使用一个DB调用来一次性写入它们。

在Laravel中,有没有办法一次复制多个模型?

2 个答案:

答案 0 :(得分:1)

您可以使用insert数据库查询构建器的语句,如下所示:

foreach ($this->models as $currentModel) {
    $newModel = $currentModel->replicate()
    $newModels[] = $newModel->toArray();
}
DB::table('table_name')->insert($newModels);

答案 1 :(得分:0)

不可能复制多个模型,您可以在api文档中看到: https://laravel.com/api/4.2/Illuminate/Database/Eloquent/Model.html#method_replicate

因此,如果您要复制X模型,您需要循环它们,您可以使用数组(使用数组参数)来填充您想要不复制的列