如何使用Eloquent通过请求数组批量更新或创建表记录?
问题
如何通过传入request array来更新整张表?要求能够更新已存在的数据行,若id不存在则创建新行;如果可行的话,希望无需遍历整张表。
尝试过的无效写法:
- 写法1:
EventViews::query()->updateOrCreate($request->all());
- 写法2:
DB::transaction(function ($request) { foreach ($request->all() as $record) { EventViews::updateOrCreate($record); } });
- 写法3:
$model = new EventViews($request->all()); $model->fill($request->all())->save();
解决方案
通过遍历请求数组中的每条记录,调用updateOrCreate方法并明确指定id作为匹配条件,即可实现“存在则更新、不存在则新增”的逻辑:
foreach($request->all() as $record){ EventViews::query()->updateOrCreate(['id'=>$record['id']], $record); }
内容的提问来源于stack exchange,提问作者Artur Müller Romanov
相关产品推荐
相关产品推荐

