2017-07-12 101 views
0

我想更新laravel中的查詢,其中$field = $field+1。它工作正常使用mysqli_query。但它並不是在工作。如何在laravel雄辯更新查詢中更新table field = field + 1

我想運行在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

+0

您是否嘗試過下面的答案 –

回答

0

遞增或遞減列的值

要增加一列

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