我想从具有int数据类型的数据库中的信用列中减去100个数字。我正在寻找通过一些Laravel查询直接减去它的方法。但是现在我首先从表中获取列值然后减去然后需要编写更新查询来更新它,如下所示:
$subtractCredit = 100;
// Get Total Credit
$totalCredit = User::select('credit')->where(['username'=>$username])-
>first();
// Subtract 100 from Total Credit
$totalCredit = $totalCredit->credit - $subtractCredit;
// Update Credit in Table
User::where(['username'=>$username])->update(['credit' => $totalCredit]);
在上面的代码中,我首先从查询中获得总积分,然后从总积分中减去100,然后使用更新查询再次更新积分。
请让我知道更好的做法。
答案 0 :(得分:4)
有一个内置函数可以递减:
User::where('username', $username)->decrement('credit', 100);
文档:https://laravel.com/docs/5.4/queries#increment-and-decrement
请注意,更新语句是糖,因此您之后无需致电save()
或update()
。
答案 1 :(得分:3)
您可以使用原始查询来完成,例如
User::where('username', $username)
->update(array(
'credit' => DB::raw('credit - 100')
));
我希望你能理解。