實務上有可能會遇到資料若存在就更新,不存在就塞進去,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存在時,要更新的欄位。 本筆記參考:1. https://www.bestinterviewquestion.com/question/how-to-use-updateorinsert-method-in-laravel-query-asogm3909ae2. https://blog.csdn.net/u010324331/article/details/826982113. https://laravel.com/docs/8.x/queries#upserts