如何在laravel eloquent更新查询中更新table field = field + 1

时间:2017-07-12 14:55:46

标签: php mysql laravel-5.3 laravel-eloquent

我想在laravel中更新$field = $field+1的查询。它使用mysqli_query工作正常。但这不是laravel orm。

我想在laravel orm中运行此查询

$sql = "Update $tbl set cnt=cnt+1 where user_id='x'"

在mysql中运行此查询时,我得到以下结果

If cnt =1 in databases it will increment $cnt = $cnt+1 = 1+1 =2

我想在laravel orm中运行这个sql查询

$where = ['user_id' => 'x'];
$field = ['cnt' => 'cnt+1'];
$tbl = 'log_cnt';
Capsule::table($tbl)->where($where)->update($field);

但运行此查询后,输出将在数据库中显示$cnt=0

1 个答案:

答案 0 :(得分:2)

增加或减少列的值

增加单列

Capsule::table('log_cnt')->increment('cnt');
     Query: UPDATE log_cnt SET cnt = cnt + 1;

Capsule::table('log_cnt')->increment('cnt', 5);
     Query: UPDATE log_cnt SET cnt = cnt + 5;

减少单列

Capsule::table('log_cnt')->decrement('cnt');
     Query: UPDATE log_cnt SET cnt = cnt - 1;

Capsule::table('log_cnt')->decrement('cnt', 5);
     Query: UPDATE log_cnt SET cnt = cnt - 5;

您还可以指定要更新的其他列:

Capsule::table('log_cnt')->increment('cnt', 1, ['user_id' => 'x']);
    Query: UPDATE log_cnt SET cnt = cnt + 1, user_id = 'x';

参考:https://laravel.com/docs/5.4/queries#increment-and-decrement