我正在尝试根据其唯一字段taskCode
更新多行
并将从tbl_projtask
更新taskWeight
的字段
我有这个2可变
-
$request->dataWeight
该变量来自ajax请求,该请求包含类似于95,75,65
的内容,该值用逗号分隔。 -
$request->dataWeightAttr
该变量来自ajax请求,该请求包含类似于TaskCode1, TaskCode2, TaskCode3
的内容
在我的MainController.php
中
我有这个代码
$myString = $request->dataWeightAttr;
foreach($myString as $value){
DB::table('tbl_projtask')
->where('taskCode', $value)
->update([
'taskWeight'=> $request->dataWeight,
'by_id'=> auth()->user()->id,
'updated_by'=> auth()->user()->name,
'updated_at' => now()
]);
}
正如你在我的update
代码中看到的那样
我使用request->dataWeightAttr
来查找哪些行应该更新,$request->dataWeight
是特定taskCode
的值
我这样做对吗?
将字符串转换为数组
$dataWeight = explode(',',$request->dataWeight); // convert to array
$dataWeightAttr = explode(',',$request->dataWeightAttr); // convert to array
假设两个数组中都有相关的值。
foreach($dataWeightAttr as $key => $value){
DB::table('tbl_projtask')
->where('taskCode', $value)
->update([
'taskWeight'=> $dataWeight[$key],
'by_id'=> auth()->user()->id,
'updated_by'=> auth()->user()->name,
'updated_at' => now()
]);
}
如果您想更新相同的字段但不同的id,可以使用whereIn而不是foreach。
DB::table('tbl_projtask')
->whereIn('taskCode', $request->dataWeightAttr)
->update([
'taskWeight'=> $request->dataWeight,
'by_id'=> auth()->user()->id,
'updated_by'=> auth()->user()->name,
'updated_at' => now()
]);