2017-09-22 7 views
1

新しいデータを作成するためのコードがありますが、 ですが、laravel 5.5を使用してデータベースに新しいデータを挿入する最も良い方法は何ですか?laravel 5.5データを作成する最良の方法

コード1:

$user = User::create([ 
    'name' => $request->name, 
    'username' => $request->username, 
    'email' => $request->email, 
    'password' => $request->password, 
]); 

または

コード2:

$user = new User(); 
$user->name = $request->name; 
$user->username = $request->username; 
$user->email = $request->email; 
$user->password = $request->password; 
$user->save(); 

最良の方法は何ですか?あなたの理由は何ですか?

+0

に役立ちます。 'create([arrays in values]) 'を使うと' $ fillable 'や' $ guarded'ルールが強制的に適用されますが、各属性を個別に使用すると、モデル作成時に 'create([])'プログラムで更新または作成するとき、または保護されたフィールドを更新する必要があるときは、他の構文を使用します。 – apokryfos

答えて

3

どちらも同じです。最初のオプションは、2番目のオプションを実行する優雅な方法です。 Eloquentは、文を読みやすくするためのものです。 firstOrCreateのようなメソッドは、Eloquentの方法がコード内でははるかに読みやすくシンプルな例です。しかし、あなたが提供した2つは基本的に同じです。サイドノートとして

、あなたがこれまでに条件付きでプロパティを保存する必要がある場合、二番目のオプションは、あなたがいる場合ステートメント、または任意の条件コードステートメントを使用することができます。..

1

2つの方法が良好です。あなたが知る必要があるのは、1つまたは他のオプションを使用するときです。

すべてのリクエストデータを処理しなくても受信して保存する場合は、大量割り当て方式を使用できます。しかし、あなたは、日付をより良くコントロールしたいときに、第2の方法を選択することができます。

例えば

ユーザー名とパスワードを含む加入者データを受信購読フォームを持っていますが、パスワード値を暗号化する必要があります。この場合は、2番目の選択肢が最適です。要求によってパスワード属性を受け取ってから値を暗号化し、最後に暗号化されたパスワードを$ model-> password属性に設定するからです。

大量の割り当て方法を使用できるプロパティについては、必要のない場合は絶対に制御してください。

関連する問題