web-dev-qa-db-ja.com

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から与えられた関数を使用してこれを行う効率的な方法を見つけたいだけです。ありがとう。提案があれば十分です。

18
Vainglory07

これを行う既存の関数はありません。 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'),
   ]);
36
lukasgeiter

5.2での今後の参考のために、次のようにして実行できるようにしました

操作中に更新する追加の列を指定することもできます。

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

ソース: https://laravel.com/docs/5.2/queries#updates

まず、ドキュメントによれば、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呼び出しを続けると、サンプルコードはおそらくエラーを生成します。

5
Luceos

Laravel Eloquent Modelの増分と減分

カートに追加するオプションは、eコマースWebサイトで最も重要な機能の1つです。トリッキーな部分は、カート内のアイテム数を取得してカートアイコンに表示することです。これを実現するための主なアプローチは、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
Praveen AK

laravel 5.7 laravel query builder、increment and decrement では、簡単に実行できます。Model::where('id', "rowID")->increment('columne1');またはDB DB::table("my_table")->where('id', "rowID")->increment('column1');

1
Ziaur Rahman