Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is different between save(), create() function in laravel 5

I need to know what is the difference of save() and create() function in laravel 5. Where we can use save() and create() ?

like image 268
Nikunj K. Avatar asked Aug 09 '16 06:08

Nikunj K.


People also ask

What is -> Save () in laravel?

save() method is used both for saving new model, and updating existing one. here you are creating new model or find existing one, setting its properties one by one and finally saves in database.

What is the difference between insert and create in laravel?

create() is a function from Eloquent, insert() - Query Builder. In other words, create is just an Eloquent model function that handles the creation of the object to the DB (in a more abstract way). Insert however tries to create the actual query string.

How can we save eloquent?

It looks like save() method only works on objects. Eloquent only deals with objects (models) and performs database inserts and updates to persist those models. $model = new Model; $model->fill(array); $model->save(); new up an empty model(object) then fill it with your array of data, and finally save it.

How do I save a model in laravel?

Laravel Model::create or Model->save()$product = new Product(); $product->title = $request->title; $product->category = $request->category; $product->save();


1 Answers

Model::create is a simple wrapper around $model = new MyModel(); $model->save() See the implementation

/**  * 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() method is used both for saving new model, and updating existing one. here you are creating new model or find existing one, setting its properties one by one and finally saves in database.

  • save() accepts a full Eloquent model instance

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


create()

  • while in creating method you are passing an array, setting properties in model and persists in the database in one shot.
  • create() accepts a plain PHP array

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

    EDIT
    As @PawelMysior pointed out, before using the create method, be sure to mark columns whose values are safe to set via mass-assignment (such as name, birth_date, and so on.), we need to update our Eloquent models by providing a new property called $fillable. This is simply an array containing the names of the attributes that are safe to set via mass assignment:

example:-

class Country extends Model {      protected $fillable = [         'name',         'area',         'language',         ]; } 
like image 75
Tony Vincent Avatar answered Oct 08 '22 09:10

Tony Vincent