2017-10-06 193 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);