Fus*_*ion 6 mass-assignment eloquent laravel-5.2
我需要存储恰好三个页面,在通过形式一次。我希望以与模型save()方法类似的方式进行保存,因为这将自动更新记录时间戳。
如何一次对多个记录执行此操作?
我的页面型号:
namespace App;
use Illuminate\Database\Eloquent\Model;
class Page extends Model{
protected $table = 'simple_pages';
}
Run Code Online (Sandbox Code Playgroud)
我的代码:
public function createPages(Request $request){ // I use Page at the top
$data = [
[
'title'=> $request->first,
'content'=> $request->firstCont
],[
'title'=> $request->second,
'content'=> $request->secondCont
][
'title'=> $request->third,
'content'=> $request->thirdCont
]
];
Page::unguard();
$pages = new Page($data);
$pages->save(); // Something like this would be amazing
Page::reguard();
}
Run Code Online (Sandbox Code Playgroud)
注意:我强烈反对创建多个Page模型实例,然后将它们循环以保存每个实例。另外,我也不想使用数据库插入,因为它不会自动更新记录时间戳。
经过长时间的搜索,我发现了这个:
$eloquentCollection->each(function ($item, $key) {
$item->save();
});
Run Code Online (Sandbox Code Playgroud)
是的,它是迭代,但看起来没有其他方法可以保存多个模型。唯一的选择是使用DB::insert(),但要注意没有自动更新的时间戳。
此外,如果您愿意保存太多的 eloquent 模型,由于可能存在内存问题,请将它们分块保存(或将它们推入Queue)。
如果您阅读手册质量分配。
public function createPages(Request $request){ // I use Page at the top
$data = [
[
'title'=> $request->first,
'content'=> $request->firstCont
],[
'title'=> $request->second,
'content'=> $request->secondCont
][
'title'=> $request->third,
'content'=> $request->thirdCont
]
];
Page::unguard();
$pages = Page::create($data);
Page::reguard();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14617 次 |
| 最近记录: |