Есть ли способ увеличить более одного столбца в 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. Благодарю. Любые предложения будут делать.
Для этого не существует функции. Вы должны использовать 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'),
]);
Для дальнейшего использования в 5.2 было сделано следующее:
Вы также можете указать дополнительные столбцы для обновления во время операции:
DB :: table («пользователи») -> приращение («голоса», 1, [‘name’ => ‘Джон’]);
Во-первых, результат 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
позвоните на следующую линию.
Инкременты и снижения в модели 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
Сейчас в Laravel 5,7 построитель запросов laravel, увеличение и уменьшение, это можно сделать легко. Model::where('id', "rowID")->increment('columne1');
или вы можете использовать БД DB::table("my_table")->where('id', "rowID")->increment('column1');