如何更新集合行数据 [英] How to Update a Collection rows data

查看:65
本文介绍了如何更新集合行数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想了解如何使用array更新数组数据的逻辑.我已经尝试过下面的代码,但是当我对其进行更新时,使用相同的数据更新行,而不是按pid的顺序进行更新.

我的编辑表单"请求看起来像这样

array:8 [▼
    "_token" => "6YdueIejLzorveQnzEaG8Fx5eYH9Lk1qcL1LQXya"
    "supplierName" => "DAR ERICA 3"
    "receiptNumber" => "5555KK"
    "truckNumber" => "T 500 FGT"
    "driverName" => "JOHN EMMA"
    "remark" => "OK"
    "pid" => array:2 [▼
        0 => "2"
        1 => "1"
    ]
    "qty" => array:2 [▼
        0 => "100"
        1 => "100"
    ]
]

控制器

public function update(Request $request, $inv_no)
{
    $data = $request->all();
    // dd($data);

    foreach ($request->pid as $i => $dt) {
        $match = Stock::where('inv_no', '=', $inv_no)->get();
        $match->update([
            'pid' => $request->pid[$i],
            'qty' => $request->qty[$i],
            'inv_no' => $request->inv_no,
            'user_id' => Auth::user()->id,
            'supplierName' => $request->supplierName,
            'receiptNumber' => $request->receiptNumber,
            'truckNumber' => $request->truckNumber,
            'driverName' => $request->driverName,
            'remark' => $request->remark,
        ]);

        return $this->index();
    }
}

库存表

所以我想用该inv_no=GRN2504200001更新id [7,8].我该如何在控制器上执行操作?

解决方案

您应按如下所示更改控制器.

public function update(Request $request, $inv_no)
{
    $data = $request->all();
    // dd($data);

    $stocks = Stock::where('inv_no', $inv_no)->get();
    $i = 0;

    foreach ($stocks as $stock) {  
        Stock::where('inv_no', $inv_no)
            ->where('id', $stock->id)
            ->update([
                'pid' => $request->pid[$i],
                'qty' => $request->qty[$i],
                'inv_no' => $request->inv_no,
                'user_id' => Auth::user()->id,
                'supplierName' => $request->supplierName,
                'receiptNumber' => $request->receiptNumber,
                'truckNumber' => $request->truckNumber,
                'driverName' => $request->driverName,
                'remark' => $request->remark,
            ]);

            $i++;
    }

    return $this->index();
}

I want to get the logic how I can update the array data with array. I Have tried the code below but when I update it update the rows with the same data not update as pid ordered.

I have my Edit form Request looks like this

array:8 [▼
    "_token" => "6YdueIejLzorveQnzEaG8Fx5eYH9Lk1qcL1LQXya"
    "supplierName" => "DAR ERICA 3"
    "receiptNumber" => "5555KK"
    "truckNumber" => "T 500 FGT"
    "driverName" => "JOHN EMMA"
    "remark" => "OK"
    "pid" => array:2 [▼
        0 => "2"
        1 => "1"
    ]
    "qty" => array:2 [▼
        0 => "100"
        1 => "100"
    ]
]

Controller

public function update(Request $request, $inv_no)
{
    $data = $request->all();
    // dd($data);

    foreach ($request->pid as $i => $dt) {
        $match = Stock::where('inv_no', '=', $inv_no)->get();
        $match->update([
            'pid' => $request->pid[$i],
            'qty' => $request->qty[$i],
            'inv_no' => $request->inv_no,
            'user_id' => Auth::user()->id,
            'supplierName' => $request->supplierName,
            'receiptNumber' => $request->receiptNumber,
            'truckNumber' => $request->truckNumber,
            'driverName' => $request->driverName,
            'remark' => $request->remark,
        ]);

        return $this->index();
    }
}

Stock table

So I want to update id [7,8] with that inv_no=GRN2504200001. How can I do on my controller?

解决方案

You should change your controller as below.

public function update(Request $request, $inv_no)
{
    $data = $request->all();
    // dd($data);

    $stocks = Stock::where('inv_no', $inv_no)->get();
    $i = 0;

    foreach ($stocks as $stock) {  
        Stock::where('inv_no', $inv_no)
            ->where('id', $stock->id)
            ->update([
                'pid' => $request->pid[$i],
                'qty' => $request->qty[$i],
                'inv_no' => $request->inv_no,
                'user_id' => Auth::user()->id,
                'supplierName' => $request->supplierName,
                'receiptNumber' => $request->receiptNumber,
                'truckNumber' => $request->truckNumber,
                'driverName' => $request->driverName,
                'remark' => $request->remark,
            ]);

            $i++;
    }

    return $this->index();
}

这篇关于如何更新集合行数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆