Laravel递减列值但不为负

sid*_*diq 4 php laravel eloquent laravel-5 laravel-5.2

我知道我可以使用此查询减少laravel中的列值

DB::table('users')->decrement('votes', 5);
Run Code Online (Sandbox Code Playgroud)

但是我想限制该值成为负值。

无论如何,laravel可以做到这一点吗?

jed*_*ylo 6

您将需要使用原始查询。

下面的代码应该为所有支持GREATEST函数的数据库引擎解决问题:

DB::table('users')->update(['votes' => DB::raw('GREATEST(votes - 5, 0)')]);
Run Code Online (Sandbox Code Playgroud)

它将使用户表中的票数列减少5,但不会低于零-这就是GREATEST函数的作用。