Мне нужно знать, в чем разница функций save()
и create()
в laravel 5.
Где мы можем использовать save()
и create()
?
Что отличает функция save(), create() в laravel 5
Ответ 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() принимает полный экземпляр модели Eloquent
$comment = new App\Comment(['message' => 'A new comment.']); $post = App\Post::find(1); $post->comments()->save($comment);
создать()
- в то время как при создании метода вы передаете массив, устанавливая свойства в модель и сохраняется в базе данных в один выстрел.
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',
];
}