Laravel updateOrInsert / updateOrCreate

閱讀時間約 2 分鐘

實務上有可能會遇到資料若存在就更新,不存在就塞進去,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-asogm3909ae
2.
https://blog.csdn.net/u010324331/article/details/82698211
3.
https://laravel.com/docs/8.x/queries#upserts

為什麼會看到廣告
21會員
161內容數
留言0
查看全部
發表第一個留言支持創作者!
Vic Lin的沙龍 的其他內容
將 Cookie SameSite屬性設定為None Secure。 config/session.php: 'secure' => env('SESSION_SECURE_COOKIE', true), 'same_site' => 'none', 本筆記參考: 1. https://ithel
原本如果只用手機登入,可以這樣寫: E 如果允許user透過手機或email登入,可以改成這樣: E 原理是判斷輸入的是手機或信箱,決定要用cell/password 還是 email/password來驗證是否登入成功! 本筆記參考: 1. https://stackoverflow.com/q
安裝Facebook PHP SDK: $ composer require facebook/graph-sdk Sample code: E 本筆記參考: 1. https://github.com/facebookarchive/php-graph-sdk
Laravel設定 1. 安裝Socialite: 在之前的google第三方登入文章有提到,不再贅述。 2. .env新增: FB_CLIENT_ID=xxx FB_CLIENT_SECRET=xxx FB_REDIRECT=http://yourdomain/facebook/authCall
Laravel中透過SMTP寄信,出現類似這種錯誤訊息: Failed to authenticate on SMTP server with username \"[email protected]\" using 3 possible authenticators. Authenticator LOGI
從瀏覽器console看到類似這個error:  ..... has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource 表示遇到CORS的
將 Cookie SameSite屬性設定為None Secure。 config/session.php: 'secure' => env('SESSION_SECURE_COOKIE', true), 'same_site' => 'none', 本筆記參考: 1. https://ithel
原本如果只用手機登入,可以這樣寫: E 如果允許user透過手機或email登入,可以改成這樣: E 原理是判斷輸入的是手機或信箱,決定要用cell/password 還是 email/password來驗證是否登入成功! 本筆記參考: 1. https://stackoverflow.com/q
安裝Facebook PHP SDK: $ composer require facebook/graph-sdk Sample code: E 本筆記參考: 1. https://github.com/facebookarchive/php-graph-sdk
Laravel設定 1. 安裝Socialite: 在之前的google第三方登入文章有提到,不再贅述。 2. .env新增: FB_CLIENT_ID=xxx FB_CLIENT_SECRET=xxx FB_REDIRECT=http://yourdomain/facebook/authCall
Laravel中透過SMTP寄信,出現類似這種錯誤訊息: Failed to authenticate on SMTP server with username \"[email protected]\" using 3 possible authenticators. Authenticator LOGI
從瀏覽器console看到類似這個error:  ..... has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource 表示遇到CORS的
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...