What does Model::unguard() do in the database seeder file from Laravel 5?

Model::unguard() does temporarily disable the mass assignment protection of the model, so you can seed all model properties.

Take a look at http://laravel.com/docs/5.1/eloquent#mass-assignment for more information about mass assignment in Eloquent.


Take for example the currency table Migration file

    $table->double('rate');
    $table->boolean('is_default')->default(false);

If your Currency Model file, the only fillables are

 protected $fillable = [
        'rate',
    ]

is_default can never be set by mass assignment. For example

Currency::create([
   'rate' => 5.6,
   'is_default' => true
])

will return a currency with

'rate' => 5.6
'is_default' => false

But you can mass assign the field using unguard and reguard as follows

Model::unguard()
Currency::create([
   'rate' => 5.6,
   'is_default' => true
])
Model::reguard()

Then your model will be created with

'rate' => 5.6
'is_default' => true