Что отличает функция 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() принимает полный экземпляр модели 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',
        ];
}