Eloquent の firstOrNew() メソッドを使用してレコードを効率的に挿入または更新するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-10-20 08:47:01
オリジナル
491 人が閲覧しました

How to Insert or Update Records Efficiently Using Eloquent's firstOrNew() Method?

Laravel Eloquent でのレコードの挿入または更新

データベースを操作する場合、通常、新しいレコードが存在しない場合はそれを挿入したり、既存のレコードを更新したりする必要があります。そうであれば。 Laravel の Eloquent ORM では、firstOrNew() メソッドを使用してこれを簡潔に行うことができます。

構文

$model = Model::firstOrNew($attributes);
ログイン後にコピー
  • $attributes: 最初に存在する必要がある属性の配列

既存のレコードの更新

レコードがデータベースに既に存在する場合、firstOrNew() メソッドはそのモデルのインスタンスを返します。その後、その属性を変更し、save() メソッドを使用して保存できます。

<code class="php">$user = User::firstOrNew(array('name' => Input::get('name')));
$user->foo = Input::get('foo');
$user->save();</code>
ログイン後にコピー

新しいレコードの挿入

レコードがデータベースに存在しない場合は、firstOrNew() メソッドが使用されます。指定された属性を持つモデルの新しいインスタンスを作成します。 save() メソッドを呼び出すと、レコードがデータベースに挿入されます。

<code class="php">// Insert new record into database</code>
ログイン後にコピー

代替アプローチ

提供されたコード スニペットでは、次のアプローチも使用して、存在しない場合は新しいレコードを作成し、存在する場合は既存のレコードを更新します:

<code class="php">$shopOwner = ShopMeta::where('shopId', '=', $theID)
    ->where('metadataKey', '=', 2001)->first();

if ($shopOwner == null) {
    // Insert new record into database
} else {
    // Update the existing record
}</code>
ログイン後にコピー

このアプローチでは、最初にデータベースにクエリを実行して既存のレコードを取得します。レコードが見つからない場合は、新しいレコードが挿入されます。それ以外の場合は、既存のレコードが更新されます。

更新されたドキュメント

firstOrNew() メソッドの最新情報については、以下にリンクされている更新されたドキュメントを参照してください。

[更新されたドキュメント]リンク](https://laravel.com/docs/8.x/eloquent)

以上がEloquent の firstOrNew() メソッドを使用してレコードを効率的に挿入または更新するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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