Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel store multiple只保存一个_Php_Laravel - Fatal编程技术网

Php Laravel store multiple只保存一个

Php Laravel store multiple只保存一个,php,laravel,Php,Laravel,我正在向控制器发送数据数组,但它只将1行保存到数据库,我需要保存多行(取决于数组长度) 代码 控制器 public function store(Request $request) { $user = Auth::guard('api')->user(); $transit = new Transit; foreach($request->input('serials') as $serial){ //looping my serials array for

我正在向控制器发送数据数组,但它只将1行保存到数据库,我需要保存多行(取决于数组长度)

代码
控制器

public 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.'
    ]);
}
截图
请求数据

存储的数据


有什么想法吗?移动
$transit=新中转并在返回响应之前结束foreach循环

当前设置中的情况是,在第一次迭代期间,将创建一个transit对象,当保存该对象时,它将获得一个id。因此,对于第二次/后续迭代,transit对象将具有一个
id
,调用save将对具有该id的记录执行
更新
操作


将其移动到foreach内部将始终为您提供一个新的空
传输
对象,保存将为您提供一个新记录。

Move
$Transit=new Transit并在返回响应之前结束foreach循环

当前设置中的情况是,在第一次迭代期间,将创建一个transit对象,当保存该对象时,它将获得一个id。因此,对于第二次/后续迭代,transit对象将具有一个
id
,调用save将对具有该id的记录执行
更新
操作


将其移动到foreach内部将始终为您提供一个新的空
Transit
对象,保存将为您提供一条新记录。

如果我没有遗漏什么,则
save
似乎位于foreach外部。只有两个项目中的最后一个未被过滤的项目将被保存。正如我所看到的,您在创建对象后只保存了一次。您能确认吗?
$barcode->save()
丢失,但实际上您只调用了“$barcode=barcode::where…”,但没有在此处插入任何数据。让我们通过移动
$transit=new transit来检查内部foreach以及。在返回响应之前,将foreach结尾移到右侧。@user3532758我刚刚这样做了,效果很好:)谢谢如果我没有遗漏什么,
save
似乎在foreach之外。只有两个项目中的最后一个未被过滤的项目将被保存。正如我所看到的,您在创建对象后只保存了一次。您能确认吗?
$barcode->save()
丢失,但实际上您只调用了“$barcode=barcode::where…”,但没有在此处插入任何数据。让我们通过移动
$transit=new transit来检查内部foreach以及。在返回响应之前,将foreach的结尾移到右边。@user3532758我刚刚这样做了,效果很好:)谢谢