Laravel Model allows two functions for inserting the values to the database table. They are
I found they perform similar operations. What’s difference between them?
Here is Solutions:
We have many solutions to this problem, But we recommend you to use the first solution because it is tested & true solution that will 100% work for you.
If you using insert() method you can’t default created_at and updated_at database column
it will be null
DefaultUser::insert(['username' => $request->username, 'city' => $request->city, 'profile_image' => $request->profile_image]);
when we use create method you must define this model in fillable fields
Add in Your Model
protected $fillable = ['username','city', 'profile_image'];
Add your Controller
DefaultUser::create(['username' => $request->username, 'city' => $request->city, 'profile_image' => $request->profile_image]);
then we can use create method without **mass assignment error **
basically here , table defined fields are protected in your model
you should define which model attributes you want to make mass assignable. You may do this using the $fillable property on the model
The model does not have an
Model::insert results in a call to (the Query Builder)
Builder::insert through the
__call() magic method which then avoids the Eloquent benefits like setting the
It also avoids the Mass-assignment protection which Eloquent protects you from inserting unintentional data.
So I would always use
create or setting each field separately (if you need to modify the incoming data) and call
save() on the model instance.
Insert method :
The insert method accepts an array of column names and values.using this method you can insert data without specify fillable and guarded attribute on the model and here created_at and updated_at values put as NULL value by default.
The create method also used to insert a new model in a single line. It’s instance will return you from that method. before using create() will need to specify fillable or guarded attribute on model its protect against mass-assignment by default and its auto fillable value for create_at and updated_at
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
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
Note: Use and implement solution 1 because this method fully tested our system.
Thank you 🙂