Как обновить данные строк коллекции - PullRequest
0 голосов
/ 27 апреля 2020

Я хочу получить логи c, как я могу обновить данные массива массивом. Я пробовал приведенный ниже код, но когда я обновляю его, обновляйте строки с теми же данными, которые не обновляются, как заказано 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();
    }
}

Таблица запасов enter image description here

Поэтому я хочу обновить id [7,8] с помощью этого inv_no=GRN2504200001. Как я могу сделать на моем контроллере?

Ответы [ 2 ]

1 голос
/ 27 апреля 2020

Вы должны изменить свой контроллер, как показано ниже.

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();
}
0 голосов
/ 27 апреля 2020

Вы можете сделать это следующим образом

$stockAll = Stock::where('inv_no','=',$inv_no)->get();

foreach($stockAll as $stock){

    foreach($request->pid as $i => $dt){

         $stockData = Stock::find($stock->id);

         $stockData->pid = $request->pid[$i];
         $stockData->qty = $request->qty[$i];
         $stockData->inv_no = $request->inv_no;
         $stockData->user_id = Auth::user()->id;
         $stockData->supplierName = $request->supplierName;
         $stockData->receiptNumber = $request->receiptNumber;
         $stockData->truckNumber = $request->truckNumber;
         $stockData->driverName = $request->driverName;
         $stockData->remark = $request->remark;

         $stockData->save();

    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...