如何在一个雄辩的查询中递增和更新列

2022-08-30 14:40:03

是否可以在一个查询中更新时间戳(除了)并递增列?我显然可以updated_at

->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()];

无需先查询并获取计数?


答案 1

您可以指定在递增或递减操作期间要更新的其他列:

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

这是更雄辩的解决方案。


答案 2

您可以使用以下方法:DB::raw

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

推荐