L'assegnazione di massa avviene quando si invia un array alla creazione del modello, fondamentalmente impostando un gruppo di campi sul modello in una sola volta, piuttosto che uno per uno, qualcosa del tipo:
$user = new User(request()->all());
(Questo invece di impostare esplicitamente ogni valore sul modello separatamente.)
È possibile utilizzare fillable
per proteggere i campi in cui si desidera effettivamente consentire l'aggiornamento.
Puoi anche bloccare l'assegnazione di massa di tutti i campi in questo modo:
protected $guarded = ['*'];
Diciamo che nella tua tabella utente hai un campo che è user_type
e che può avere valori di utente / amministratore
Ovviamente, non vuoi che gli utenti siano in grado di aggiornare questo valore. In teoria, se hai usato il codice sopra, qualcuno potrebbe iniettare in un modulo un nuovo campo user_type
e inviare "admin" insieme agli altri dati del modulo, e passare facilmente il proprio account a un account admin ... cattive notizie.
Aggiungendo:
$fillable = ['name', 'password', 'email'];
Stai assicurando che solo quei valori possano essere aggiornati usando mass assignment
Per poter aggiornare il user_type
valore, è necessario impostarlo esplicitamente sul modello e salvarlo, in questo modo:
$user->user_type = 'admin';
$user->save();