Laravel 5.4:直接从数据库中的列中减去数字

Ami*_*pta 5 php mysql laravel laravel-query-builder laravel-5.4

我想从具有 int 数据类型的数据库中的 credit 列中减去 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]);
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,我首先从查询中获得总信用,然后从总信用中减去 100,然后使用更新查询再次更新信用。

请让我知道这样做的更好方法。

Joe*_*inz 8

有一个内置的递减函数:

User::where('username', $username)->decrement('credit', 100);
Run Code Online (Sandbox Code Playgroud)

文档:https : //laravel.com/docs/5.4/queries#increment-and-decrement

请注意,它是更新语句的糖,因此您不需要调用save()update()之后。


Sag*_*tam 5

您可以使用原始查询来完成,例如,

User::where('username', $username)
->update(array(
    'credit' => DB::raw('credit - 100')
));
Run Code Online (Sandbox Code Playgroud)

我希望你会明白。