一次复制多个模型
Replicating multiple models at once
我正在使用 Laravel 4.2。
如果我想复制一个模型,我可以使用以下方法:
$newModel = $currentModel->replicate();
$newModel->save();
但是我把它放在一个循环中,像这样:
foreach ($this->models as $currentModel) {
$newModel = $currentModel->replicate();
$newModel->save();
}
这显然会导致多个数据库调用。我想要更高效的东西,这样我就可以循环遍历我的模型,然后在循环之外使用一个数据库调用一次性将它们全部写入。
在Laravel中有没有办法一次复制多个模型?
不可以复制多个模型,您可以在 api 文档中看到:
https://laravel.com/api/4.2/Illuminate/Database/Eloquent/Model.html#method_replicate
因此,如果您要复制 X 模型,您需要循环它们,并且您可以指定(使用数组参数)您不想复制的列
您可以像这样使用数据库查询生成器的 insert
语句:
foreach ($this->models as $currentModel) {
$newModel = $currentModel->replicate()
$newModels[] = $newModel->toArray();
}
DB::table('table_name')->insert($newModels);
我正在使用 Laravel 4.2。
如果我想复制一个模型,我可以使用以下方法:
$newModel = $currentModel->replicate();
$newModel->save();
但是我把它放在一个循环中,像这样:
foreach ($this->models as $currentModel) {
$newModel = $currentModel->replicate();
$newModel->save();
}
这显然会导致多个数据库调用。我想要更高效的东西,这样我就可以循环遍历我的模型,然后在循环之外使用一个数据库调用一次性将它们全部写入。
在Laravel中有没有办法一次复制多个模型?
不可以复制多个模型,您可以在 api 文档中看到: https://laravel.com/api/4.2/Illuminate/Database/Eloquent/Model.html#method_replicate
因此,如果您要复制 X 模型,您需要循环它们,并且您可以指定(使用数组参数)您不想复制的列
您可以像这样使用数据库查询生成器的 insert
语句:
foreach ($this->models as $currentModel) {
$newModel = $currentModel->replicate()
$newModels[] = $newModel->toArray();
}
DB::table('table_name')->insert($newModels);