如何更新集合行数据 [英] How to Update a Collection rows data
本文介绍了如何更新集合行数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想了解如何使用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屋!
查看全文