首页 > 解决方案 > 如何在 laravel 中使用增量函数

问题描述

我正在使用 DB 将值存储在数据库中。

我有“课程费用”列我要“增加”列中的“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]);

标签: laravellaravel-5laravel-5.6laravel-query-builder

解决方案


您不能使用此方法来增加多个字段。您可以使用:

$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
])

这是关于递增/递减方法的文档。


推荐阅读