Laravel's forceFill() and forceCreate()
Laravel has an undocumented method on eloquent models called forceFill().
Looking at the code found in Eloquent's Model.php you'll find the following method definition:
public function forceFill(array $attributes)
{
return static::unguarded(function () use ($attributes) {
return $this->fill($attributes);
});
}
The forceFill effectively ignores your $fillable array on the model and will update your model with the array key-value pairs that you pass to it.
You should forceFill with caution though. $fillable is partly used to allow you to mass fill a model with values, which could perhaps have come from a form. There are probably fields against your table you don't want your users to be able to edit themselves. For example, you could have an is_admin flag on your users table, or award something for length of user account using the created_at datetime, so you definitely don't want users to be able to simply add some fields to the request.
As well as forceFill we also have forceCreate which works in a similar way, but creates the model instead of filling it with updates.
Accreditly has a great article on how to use forceFill and forceCreate, which I'd encourage you to check out.