2016-08-09 17 views

Odpowiedz

12

Model::create jest proste otoki wokół $model = new MyModel(); $model->save() Zobacz realizację

/** 
* 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() metoda stosowana jest zarówno do zapisywania nowego modelu i aktualizowanie istniejący. tutaj tworzysz nowy model lub znajdujesz istniejący, ustawiając jego właściwości jeden po drugim i ostatecznie zapisuje w bazie danych.

  • oszczędzania() jest pełny wymowny instancji modelu

    $comment = new App\Comment(['message' => 'A new comment.']); 
    
    $post = App\Post::find(1);` 
    
    $post->comments()->save($comment); 
    


tworzyć()

  • podczas gdy tworzenie metodę mijają tablicę, ustawiania właściwości w model i utrzymuje się w bazie danych za jednym razem.
  • create() akceptuje zwykły tablicę PHP za

    $post = App\Post::find(1); 
    
    $comment = $post->comments()->create([ 
        'message' => 'A new comment.', 
    ]); 
    

    EDIT
    Jak @PawelMysior wskazał, przed użyciem stworzyć metodę, należy oznaczyć kolumn, których wartości są bezpieczne ustawienie poprzez masowe przypisanie (takie jak imię i nazwisko, data urodzenia, itd.), musimy zaktualizować nasze Wymowne modele, zapewniając nową właściwość o nazwie $ fillable. To jest po prostu tablicę zawierającą nazwy atrybutów, które mają ustawiony poprzez masowego przypisywania bezpieczne: ex: -

    klasa Kraj rozciąga model {

    protected $fillable = [ 
        'name', 
        'area', 
        'language', 
        ]; 
    

    }

+0

dzięki za odpowiedz, ale czy możesz dać mi więcej informacji. Przeszedłem przez dokument Laravel, ale nie miałem z tego pojęcia. –

+0

Dziękuję za szczegóły .. –

+4

Jedna ważna rzecz, o której należy pamiętać: jeśli zamierzasz używać 'create()', wszystkie atrybuty, które mu przekazujesz, muszą być wymienione w atrybucie '$ fillable' na modelu. Zobacz: https://laravel.com/docs/master/eloquent#mass-assignment – PawelMysior

Powiązane problemy