laravel 5.で使用できるsave()
とcreate()
関数の違いは何ですか?save()
とcreate()
を使用できる場所
_Model::create
_は$model = new MyModel(); $model->save()
の単純なラッパーです。実装を参照してください
_/**
* Save a new model and return the instance.
*
* @param array $attributes
* @return static
*/
public static function create(array $attributes = [])
{
$model = new static($attributes);
$model->save();
return $model;
}
_
save()
save()メソッドは、新しいモデルの保存と既存のモデルの更新の両方に使用されます。ここでは、新しいモデルを作成するか、既存のモデルを見つけて、そのプロパティを1つずつ設定し、最終的にデータベースに保存します。
save()は完全なEloquentモデルインスタンスを受け入れます
_$comment = new App\Comment(['message' => 'A new comment.']);
$post = App\Post::find(1);`
$post->comments()->save($comment);
_
create()
create()は、プレーンPHP配列を受け入れます
_$post = App\Post::find(1);
$comment = $post->comments()->create([
'message' => 'A new comment.',
]);
_
[〜#〜] edit [〜#〜]
@ PawelMysiorが指摘したように、createメソッドを使用する前に、値がマス割り当てを介して安全に設定できる列(name、birth_dateなど)を必ずマークするようにしてください。私たちのEloquentモデルは、$ fillableという新しいプロパティを提供します。これは、一括割り当てで安全に設定できる属性の名前を含む単純な配列です。
例:-
_class Country extends Model {
protected $fillable = [
'name',
'area',
'language',
];
}
_