Чем отличается функция 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',
        ];
    

    }