为了账号安全,请及时绑定邮箱和手机立即绑定

Laravel 存储多个只保存一个

Laravel 存储多个只保存一个

PHP
暮色呼如 2023-10-21 16:10:01
我正在向控制器发送数据数组,但它只将 1 行保存到数据库,我需要保存多行(取决于数组长度)。代码controllerpublic function store(Request $request){    $user = Auth::guard('api')->user();    $transit = new Transit;    foreach($request->input('serials') as $serial){ //looping my serials array for each row        if(!empty($serial['barcode_id'])) { // filter out empty objects from array            $barcode = Barcode::where('serial_number', $serial['barcode_id'])->orWhere('u_serial_number', $serial['barcode_id'])->first();            $transit->barcode_id = $barcode['id'];            $transit->transNu = mt_rand(1000000000, 9999999999);        }    }    $transit->from_id = $request->input('from_id');    $transit->to_id = $request->input('to_id');    $transit->sender_id = $user->id;    $transit->description = $request->input('description');    if($transit->save()){        DB::table('outlet_products')->where('barcode_id', $transit->barcode_id)->update(['outlet_id' => null]);    }    return response()->json([        'data' => $transit,        'message' => 'Transit data saved successfully.'    ]);}截屏request datastored data
查看完整描述

1 回答

?
慕容森

TA贡献1853条经验 获得超18个赞

移动$transit = new Transit;到 foreach 内部,并在返回响应之前结束 foreach 循环。

当前设置中发生的情况是,在第一次迭代期间,创建了一个交通对象,并且在保存它时,它将获得一个 id。因此,对于第二次和后续迭代,Transit 对象将具有一个id并且调用 save 将对update具有该 id 的记录执行操作。

将它移到 foreach 中总会给你一个新的空Transit对象,保存会给你一个新记录。


查看完整回答
反对 回复 2023-10-21
  • 1 回答
  • 0 关注
  • 69 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信