W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
你還可能遇到希望更新現(xiàn)有模型或在不存在的情況下則創(chuàng)建新的模型的情景。 Laravel 提供 updateOrCreate
方法來一步實(shí)現(xiàn)。 類似于 firstOrCreate
方法,updateOrCreate
持久化模型,因此無需調(diào)用 save()
:
// 如果有從奧克蘭到圣地亞哥的航班,則價(jià)格定為 99 美元...
// 如果沒匹配到存在的模型,則創(chuàng)建一個(gè)...
$flight = App\Models\Flight::updateOrCreate(
['departure' => 'Oakland', 'destination' => 'San Diego'],
['price' => 99, 'discounted' => 1]
);
如果你想在單次查詢中執(zhí)行多個(gè) upsert
,那么應(yīng)該使用 upsert
方法。該方法的第一個(gè)參數(shù)是由要插入或更新的值組成,而第二個(gè)參數(shù)列出相應(yīng)表中惟一標(biāo)識(shí)記錄的列,該方法的第三個(gè)也是最后一個(gè)參數(shù)是一個(gè)列數(shù)組,即如果數(shù)據(jù)庫中已經(jīng)存在匹配的記錄,應(yīng)該被更新的列。如果模型上啟用了時(shí)間戳,upsert
方法將自動(dòng)設(shè)置 created_at
和 updated_at
時(shí)間戳:
App\Models\Flight::upsert([
['departure' => 'Oakland', 'destination' => 'San Diego', 'price' => 99],
['departure' => 'Chicago', 'destination' => 'New York', 'price' => 150]
], ['departure', 'destination'], ['price']);
注意:除 SQL Server 之外的所有數(shù)據(jù)庫都要求
upsert
方法的第二個(gè)參數(shù)中的列具有 “primary” 或 “unique” 索引。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: