我正在使用DB将值存储在数据库中。
我有“课程费用”列,第i列中的“ course_fees”值要“增加”。
例如
DB::table('student')->where('registration_id','=', $request->registration_id)->increment(['course_fees' =>$request->course_fees]);
此代码增加插入值
我如何在下面的代码中修改上面的“ course_fees”值的增量
DB::table('student')->where('registration_id','=', $request->registration_id)->update(['payment_date' => $request->payment_date,'balance_fees' => $request->balance_fees,'course_fees' =>$request->course_fees]);
您不能使用此方法来增加多个字段。您可以使用:
$studentQuery = DB::table('student')->where('registration_id','=', $request->registration_id);
(clone $studentQuery)->increment('payment_date',$request->payment_date);
(clone $studentQuery)->increment('balance_fees', $request->balance_fees);
(clone $studentQuery)->increment('course_fees', $request->course_fees);
但是通过这种方式,您将运行3个数据库查询以进行更新。
但是,如果您确定为registration_id找到了完全相同的记录,则可以这样操作:
$student = DB::table('student')->where('registration_id','=', $request->registration_id)->first();
$student->update([
'payment_date' => $student->payment_date + $request->payment_date,
'balance_fees' => $student->balance_fees + $request->balance_fees,
'course_fees' => $student->course_fees + $request->course_fees
]);
编辑
如果只想增加course_fees
列,并想从输入中更新其他2列,则可以使用:
DB::table('student')->where('registration_id','=', $request->registration_id)
->increment('course_fees' , $request->course_fees, [
'payment_date' => $request->payment_date,
'balance_fees' => $request->balance_fees
])
尝试一下如果只想更新balance_fees
和payment_date
$data = DB::table('student')->where('registration_id','=', $request->registration_id)->first();
$data->update(['payment_date' => $data->payment_date + $request->payment_date,
'balance_fees' => $data->balance_fees + $request->balance_fees]);
OR如果您只想更新cource value
$data = DB::table('student')->where('registration_id','=', $request->registration_id)->first();
$data->update(['course_fees' => $student->course_fees + $request->course_fees]);