Чем отличается функция save (), create () в laravel 5
мне нужно знать, в чем разница save()
и create()
функция в laravel 5.
Где мы можем использовать save()
и create()
?
1 ответов
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() метод используется как для сохранения новой модели, так и для обновления существующий. здесь вы создаете новую модель или найти существующий, установка его свойств по одному и, наконец, сохранение в базе данных.
-
save() принимает полную красноречивую модель пример
$comment = new App\Comment(['message' => 'A new comment.']); $post = App\Post::find(1);` $post->comments()->save($comment);
create ()
- в то время как в методе create вы передаете массив, задавая свойства в модель и сохраняется в базе данных в одном кадре.
-
create () принимает обычный PHP array
$post = App\Post::find(1); $comment = $post->comments()->create([ 'message' => 'A new comment.', ]);
редактировать
Как отметил @PawelMysior, перед использованием метода create обязательно пометить столбцы, значения которых можно безопасно задать с помощью mass-assignment (такие как имя, birth_date, и так далее.), нам нужно обновить наши красноречивые модели, предоставив новое свойство под названием $fillable. Это просто массив, содержащий имена атрибутов, которые можно безопасно установить с помощью массового назначения: пример: -класс страна расширяет модель {
protected $fillable = [ 'name', 'area', 'language', ];
}