2021-04-21|閱讀時間 ‧ 約 2 分鐘

Laravel updateOrInsert / updateOrCreate

實務上有可能會遇到資料若存在就更新,不存在就塞進去,Laravel提供了好用的方法 updateOrInsert:
表示用A, B, C三個欄位當作條件,如果值存在就更新D欄位的資料,如果不存在就insert一筆新的。
  • 與updateOrCreate差別是,updateOrCreate會自動維護created_at, updated_at欄位。

後記
如果有多筆資料要update or insert,上述寫法要foreach,這時可以改用upsert,更有效率:
XXX::upsert($data, ['aa_id', 'bb_id'], ['quantity']);
  • 第二個參數放唯一識別key,文件指出要是primary or unique欄位才行,而我這邊是將aa_id與bb_id這兩個欄位group一起設為primary key。
  • 最後一個參數則是當key存在時,要更新的欄位。

分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.