中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用laravel中firstOrNew, firstOrCreate, firstOr 和 updateOrCreate 方法

發布時間:2021-01-29 14:56:09 來源:億速云 閱讀:293 作者:小新 欄目:編程語言

這篇文章主要介紹使用laravel中firstOrNew, firstOrCreate, firstOr 和 updateOrCreate 方法,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

如果您曾經使用過 Laravel ,那么您可能知道創建 Eloquent 模型的標準方法,例如 make(),create(),update 和 save()。 Laravel 還提供了一些大家沒有注意到的其他方法,這些方法對于創建和更新模型也非常有用。 因此,在本文中,我想介紹一些其他方法,并說明它們可能會有用:

firstOrNew

firstOrNew 方法找到第一個滿足某些約束的模型,沒有滿足約束條件的數據時 new 一個新的模型。

您可以采用如下代碼:

$user = User::where('email', request('email'))->first();
if ($user === null) {
    $user = new User(['email' => request('email')]);
}
$user->name = request('name');
$user->save()

并將其改寫成:

$user = User::firstOrNew(['email' =>  request('email')]);
$user->name = request('name');
$user->save()

如果找不到已有的模型,您還可以通過第二個參數傳遞一個附加屬性數組:

$user = User::firstOrNew(
    ['email' =>  request('email')],
    ['name' => request('name')]
);
$user->save();

firstOrCreate

firstOrCreate 方法跟 firstOrNew 方法很相似。它會嘗試根據你傳遞的第一個參數去查找匹配的模型,如果沒找到,會自動用第二個參數傳遞的值創建并且保存一個新的模型:

$user = User::firstOrCreate(
    ['email' =>  request('email')],
    ['name' => request('name')]
);
// No call to $user->save() needed

firstOr

我最近摸魚的時候發現了 firstOr 這個方法。 firstOr 方法會檢索第一條數據,如果沒有找到匹配的數據,就會執行傳入的回調。如果您在創建用戶時需要執行額外的步驟,或者想要執行除創建新用戶以外的其他操作,這將非常有用:

$user = User::where('email', request('email'))->firstOr(function () {
    $account = Account::create([ //... ]);
    return User::create([
        'account_id' => $account->id,
        'email' => request('email'), 
    ]);
});

updateOrCreate

updateOrCreate 方法試圖找到一個與第一個參數傳遞的約束條件匹配的模型。 如果找到匹配的模型,它將使用第二個參數傳遞的屬性更新模型。 如果找不到匹配的模型,則將創建一個新模型,同時將第一個參數和第二個參數傳入。

您可以重構這段代碼:

$user = User::where('email', request('email'))->first();
if ($user !== null) {
    $user->update(['name' => request('name')]);
} else {
    $user = User::create([
      'email' => request('email'),
      'name' => request('name'),
    ]);
}
// Do other things with the User

使用 updateOrCreate 方法:

$user = User::updateOrCreate(
    ['email' =>  request('email')],
    ['name' => request('name')]
);
// Do other things with the User

結論

總的來說,我認為這些方法可以在某些情況下幫助您簡化代碼!您是否知道其他一些有用又不為人所知的小技巧, 有的話記得告訴我。 我喜歡學習這些使 Laravel 變得如此出色的小細節。

以上是“使用laravel中firstOrNew, firstOrCreate, firstOr 和 updateOrCreate 方法”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

大新县| 手游| 独山县| 昌江| 铜梁县| 福州市| 瑞昌市| 安福县| 徐汇区| 谢通门县| 余庆县| 盖州市| 乡城县| 余姚市| 图木舒克市| 奎屯市| 灯塔市| 林甸县| 谷城县| 元谋县| 江油市| 贵德县| 曲麻莱县| 长白| 扎兰屯市| 营口市| 平泉县| 新闻| 保靖县| 临朐县| 高密市| 建阳市| 锡林浩特市| 台中市| 石城县| 大洼县| 雅安市| 肇州县| 新化县| 贡山| 瑞昌市|