Laravel Eloquent を使用した CRUD 操作の最適化
Laravel でデータベースを操作する場合、レコードを挿入または更新するのが一般的です。これを実現するために、開発者は多くの場合、挿入または更新の実行を決定する前にレコードが存在するかどうかをチェックする条件ステートメントに頼ります。
firstOrNew() メソッド
幸いなことに、 Eloquent は、firstOrNew() メソッドを通じて、より効率的なソリューションを提供します。このメソッドは、指定された基準に基づいてレコードの存在を確認し、見つかった場合は最初に一致するレコードを返します。それ以外の場合は、モデルの新しいインスタンスが作成されます。
使用例
次の例を考えてみましょう:
$shopOwner = ShopMeta::where('shopId', '=', $theID)
->where('metadataKey', '=', 2001)
->firstOrNew();
if ($shopOwner->exists) {
// Update the existing record
} else {
// Insert a new record
}
この例では、firstOrNew() メソッドを使用して、shopId とmetadataKey に基づいて ShopMeta レコードを検索します。レコードが存在する場合、if ブロックが実行され、既存のレコードが更新されます。それ以外の場合は、else ブロックが実行され、新しいレコードが挿入されます。
拡張例
firstOrNew() の威力を示す、より包括的な例を次に示します。
$user = User::firstOrNew(array('name' => Input::get('name')));
$user->foo = Input::get('foo');
$user->save();
更新されたドキュメント
回答に記載されているドキュメントのリンクは最新ではなくなっていることに注意してください。 Laravel の最新バージョンについては、次のドキュメントを参照してください:
[更新された Laravel ドキュメント](https://laravel.com/docs/8.x/eloquent)
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3