2017-10-06 198 views
0

我正在使用Laravel 4.2。一次复制多个模型

如果我要复制一个模式,我可以使用以下命令:

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

不过,我有这样的一个循环里面,像这样:

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

这显然会导致几个数据库调用。我想要更高效的东西,所以我可以遍历我的模型,然后在循环外部使用一次数据库调用将它们全部写入。

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

+0

我认为你可以做这样的'DB ::表(“表名”) - >插入(array_map(function($ mo del){ return $ model-> getAttributes(); },$ newModels))'在复制循环中收集新模型后! – Maraboc

+0

嗨@马拉博克我认为你的方法有好处,我会自己试试 – Jimmery

+0

它是否适合你? – Maraboc

回答

1

您可以使用这样的insert statment DB查询生成器的:

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