web-dev-qa-db-ja.com

1つの雄弁なクエリで列をインクリメントおよび更新する方法

タイムスタンプ(_updated_at_以外)を更新して、1つのクエリで列をインクリメントすることは可能ですか?私は明らかに->increment('count')と個別に->update(['last_count_increased_at' => Carbon::now()])を実行できますが、両方を一緒に行う簡単な方法があります。

Product::where('product_id', $product->id) ->update(['count'=>count+1, 'last_count_increased_at' => Carbon::now()];

最初にクエリを実行してカウントを取得する必要がない場合は、

10
Alex Harris

DB::raw 方法:

Product::where('product_id', $product->id)
    ->update([
      'count'=> DB::raw('count+1'), 
      'last_count_increased_at' => Carbon::now()
    ]);
31
aynber

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

Product::where('product_id', $product->id)
->increment('count', 1, ['last_count_increased_at' => Carbon::now()]);
12