laravelのfirstOrNew、firstOrCreate、firstOrおよびupdateOrCreateメソッド

藏色散人
リリース: 2020-05-16 11:54:05
転載
6106 人が閲覧しました

以下は Laravel によって開発されました入門チュートリアルのコラムでは、laravel の firstOrNew、firstOrCreate、firstOr、および updateOrCreate メソッドを紹介します。必要!

laravelのfirstOrNew、firstOrCreate、firstOrおよびupdateOrCreateメソッド

Laravel を使用したことがある場合は、おそらく make()、create()、update、save() などの Eloquent モデルを作成する標準的な方法をご存知でしょう。 Laravel は、モデルの作成と更新に非常に役立つことを人々が気づいていない他のメソッドも提供します。したがって、この記事では、他のメソッドをいくつか紹介し、それらが役立つことを示したいと思います。

firstOrNew

firstOrNew メソッドは、特定の制約を満たす最初のメソッドを見つけます。 Model, 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()
ログイン後にコピー

既存のモデルが見つからない場合は、2 番目のパラメータ An を介してそれを渡すこともできます。追加プロパティの配列:

$user = User::firstOrNew(
    ['email' =>  request('email')],
    ['name' => request('name')]
);
$user->save();
ログイン後にコピー

firstOrCreate

firstOrCreate メソッドは、firstOrNew メソッドとよく似ています。渡された最初のパラメータに基づいて一致するモデルの検索を試みます。見つからない場合は、2 番目のパラメータで渡された値を使用して新しいモデルを自動的に作成し、保存します:

$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 メソッド最初の引数で渡された制約に一致するモデルの検索を試みます。一致するモデルが見つかった場合は、2 番目の引数に渡されたプロパティを使用してモデルを更新します。一致するモデルが見つからない場合は、最初と 2 番目のパラメーターを渡して新しいモデルが作成されます。

このコードをリファクタリングできます:

$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 フレームワークの技術記事については、

laravelチュートリアルをご覧ください。

以上がlaravelのfirstOrNew、firstOrCreate、firstOrおよびupdateOrCreateメソッドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:learnku.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート