Увеличение столбцов в laravel

Есть ли способ увеличить несколько столбцов в laravel?

Скажем:

DB::table('my_table')
->where('rowID', 1)
->increment('column1', 2)
->increment('column2', 10)
->increment('column3', 13)
->increment('column4', 5);

Но это приводит к:

Call to a member function increment() on integer

Я просто хочу найти эффективный способ сделать это, используя заданные функции из laravel. Благодарю. Любые предложения сделают.

Ответ 1

Для этого нет существующей функции. Вы должны использовать update():

DB::table('my_table')
   ->where('rowID', 1)
   ->update([
       'column1' => DB::raw('column1 + 2'),
       'column2' => DB::raw('column2 + 10'),
       'column3' => DB::raw('column3 + 13'),
       'column4' => DB::raw('column4 + 5'),
   ]);

Ответ 2

Для дальнейшего использования в 5.2 это было сделано, если сделать следующее

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

DB:: table ('users') → increment ('votes', 1, ['name' = > 'John']);

Источник: https://laravel.com/docs/5.2/queries#updates

Ответ 3

Увеличение и уменьшение в модели Laravel Eloquent

Опция "Добавить в корзину" является одной из самых важных функций на сайтах электронной коммерции. Самое сложное - получить количество товаров в корзине, отображаемое на значке корзины. Преобладающий подход для достижения этой цели - использование функции увеличения и уменьшения в Laravel. Это также облегчает добавление или удаление товара из вашей корзины. Способ реализации этой функции:

$user = User::find(‘517c43667db388101e00000f);
$user->cart_count++;
// $user->cart_count--; // for decrement the count
$user->save()

Альтернативный и более простой способ,

$user = User::find($article_id);
$user->increment('cart_count');

Также это будет работать:

$user->increment('cart_count');// increase one count
$user->decrement('cart_count'); // decrease one count
$user->increment('cart_count',10); // increase 10 count
$user->decrement('cart_count',10); // decrease 10 count

Ответ 4

Прежде всего, результат increment является целым числом согласно документации: http://laravel.com/api/4.2/Illuminate/Database/Query/Builder.html

Таким образом, вы должны были бы сделать вызов для каждого приращения:

DB::table('my_table')
->where('rowID', 1)
->increment('column1', 2);
DB::table('my_table')
->where('rowID', 1)
->increment('column2', 10);
DB::table('my_table')
->where('rowID', 1)
->increment('column3', 13);
DB::table('my_table')
->where('rowID', 1)
->increment('column4', 5);

Я не могу найти более быстрого решения, если вы не хотите решить его с помощью необработанной команды запроса на обновление.

Также ваш пример кода, вероятно, сгенерирует ошибку, поскольку вы закрыли оператор с помощью ; и продолжите с новым вызовом ->increment на следующей строке.