laravel 4: как вычесть из текущего значения столбца при обновлении строк?

Мне было интересно, как это сделать:

Table::update(array('position'=>'position+1')); 

Насколько я знаю, laravel 4 управляет «позицией + 1» в виде строки, поэтому становится 0.

Я хочу выполнить что-то вроде

 UPDATE table SET position = position + 1 

Могу ли я сделать это с помощью красноречивого?

EDIT: nevermind, doh .. "DB :: table ('users') -> increment ('votes');"

Просто используйте метод increment :

 DB::table('users')->increment('position'); 

То же самое справедливо для decrement :

 DB::table('users')->decrement('rank'); 

Вы можете даже установить второй параметр на сумму, которую вы хотите добавить / вычесть:

 DB::table('users')->increment('posts', 5); DB::table('users')->decrement('likes', 3); 

Кроме того, если вам нужно обновить другие столбцы вместе с ним, вы передадите его в качестве третьего параметра:

 DB::table('users')->increment('range', 3, array( 'name' => 'Raphael', 'rank' => 10 )); 

То же самое касается и моделей Eloquent :

 $firstUser = User::find(1); $firstUser->increment('height', 0.1, array( 'active' => false )); 

вы также можете сделать с DB :: raw способом следующим образом:

 DB::table('tablename')->where(your condition)->update(['position' => DB::raw('position+1')]); 

вы также можете выполнять другие операции с

 DB::table('tablename')->where(your condition)->update(['position' => DB::raw('position * 2')]); 

Это отлично сработало для меня

 \Models\User::where("id", $userId)->increment("points"); 

просто вы можете использовать DB :: raw метод следующим образом: Table::update(DB::raw('position=position+1'));