foreach($request->all() as $record){ EventViews::query()->updateOrCreate(['id'=>$record['id']], $record); }
如何通过传递来更新整个表request array?id如果不存在,它应该更新现有行并创建新行。如果可能的话,不必翻遍loop整个表。
request array
id
loop
无效的尝试:
EventViews::query()->updateOrCreate($request->all());
.
DB::transaction(function ($request) { foreach ($request->all() as $record) { EventViews::updateOrCreate($record); } });
$model = new EventViews($request->all()); $model->fill($request->all())->save();
假设您的请求有效负载看起来像
records[]=[id=1,name=foo,description=foo,c=1]& records[]=[id=2,name=bar,description=bar,c=1]& ...
你可以像这样循环遍历它:
$input = $request->input('records'); foreach($input as $record){ EventViews::query()->updateOrCreate(['id'=>$record['id']],$record); }
如果您的请求如下所示:
1=[name=foo,description=foo,c=1]& 2=[name=bar,description=bar,c=1]& ...
其中参数名称是 id,那么您可以使用:
$input = $request->input(); foreach($input as $key => $record){ EventViews::query()->updateOrCreate(['id'=>$key],$record); }