[解決済み] ファースト・オア・クリエイト
2023-06-02 05:11:35
質問
使っていることは知っています。
User::firstOrCreate(array('name' => $input['name'], 'email' => $input['email'], 'password' => $input['password']));
最初にユーザが存在するかどうかをチェックし、存在しない場合は作成しますが、どのようにチェックするのでしょうか?例えば、名前ではなく、メールアドレスが存在するかどうかだけをチェックすることはできますか。2人のユーザーが同じ名前を持っているかもしれませんが、メールアドレスは一意である必要がありますから。
どのように解決するのですか?
firstOrCreate()
は、その前にすべての引数が存在するかどうかをチェックします。
finds
にマッチするかどうかを調べます。もし全ての引数がマッチしない場合、モデルの新しいインスタンスが作成されます。
もし、特定のフィールドについてのみチェックしたい場合は
firstOrCreate(['field_name' => 'value'])
を使ってください。これは、マッチした最初の項目を返すか、マッチしない場合は新しい項目を作成します。
との違いは
firstOrCreate()
と
firstOrNew()
:
-
firstOrCreate()
は、一致するものがない場合、自動的に新しいエントリを作成します。それ以外の場合は、一致した項目を表示します。 -
firstOrNew()
は、マッチしなかった場合に作業するための新しいモデルインスタンスを与えますが、明示的にそうしたときだけデータベースに保存されます (save()
を呼び出した時のみです。) それ以外の場合は、マッチしたアイテムを提供します。
どちらかを選択することは、何をしたいかによります。初めて保存される前にモデルのインスタンスを変更したい場合(たとえば
name
や何らかの必須フィールドの設定など) は
firstOrNew()
. もし、引数を使うだけで、モデルインスタンスを修正することなく、すぐにデータベースに新しいモデルインスタンスを作成することができるのであれば
firstOrCreate()
.
関連
-
[解決済み] Laravel Eloquentを使用して複数のWhere句クエリを作成する方法?
-
[解決済み] Laravel Eloquent - distinct() と count() が正しく動作しない。
-
[解決済み] Laravelがピボットテーブルに複数のレコードを追加しないようにする方法
-
[解決済み] パブリックディレクトリを取得するには?
-
[解決済み] Laravel Migrationsから特定のファイルをMigrateする
-
[解決済み] LaravelではbelongsToとhasOneのどちらを使うべきですか?
-
[解決済み] LaravelのBladeテンプレートで、レイアウトに変数を渡すには?
-
[解決済み] コレクション要素をフェッチした後、アンセット(削除)するには?
-
[解決済み] Laravel Eloquentのリミットとオフセット
-
[解決済み] UnixタイムスタンプをCarbonオブジェクトに変換する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Laravel Eloquent - distinct() と count() が正しく動作しない。
-
[解決済み] Laravelで非キーカラムのフィールドに明確な値を取得する方法は?
-
[解決済み] パブリックディレクトリを取得するには?
-
[解決済み] 2つのCarbon Timestampを比較するには?
-
[解決済み] LaravelではbelongsToとhasOneのどちらを使うべきですか?
-
[解決済み] Laravel Eloquentのリミットとオフセット
-
[解決済み] laravel Unable to prepare route ... for serialization. クロージャを使う
-
[解決済み] Laravel Queue システムをサーバー上で動作させる方法
-
[解決済み] UnixタイムスタンプをCarbonオブジェクトに変換する
-
[解決済み] ピボットテーブルのデータ添付でタイムスタンプが更新されない