Sto usando Laravel 4.2.
l'errore che stai vedendo
[Illuminate\Database\Eloquent\MassAssignmentException]
username
in effetti è perché il database è protetto dal riempimento in massa, che è ciò che si fa quando si esegue una seminatrice. Tuttavia, a mio parere, non è necessario (e potrebbe non essere sicuro) dichiarare quali campi dovrebbero essere compilabili nel tuo modello se hai solo bisogno di eseguire una seminatrice.
Nella tua cartella di seeding hai la classe DatabaseSeeder:
class DatabaseSeeder extends Seeder {
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
Eloquent::unguard();
//$this->call('UserTableSeeder');
}
}
Questa classe funge da facciata, elencando tutti i seeders che devono essere eseguiti. Se chiami manualmente la seminatrice UsersTableSeeder tramite artisan, come hai fatto con il php artisan db:seed --class="UsersTableSeeder"
comando, ignori questa classe DatabaseSeeder.
In questa classe DatabaseSeeder il comando Eloquent::unguard();
consente l'assegnazione di massa temporanea su tutte le tabelle, che è esattamente ciò di cui hai bisogno quando esegui il seeding di un database. Questo metodo unguard viene eseguito solo quando esegui il php aristan db:seed
comando, quindi è temporaneo invece di rendere i campi compilabili nel tuo modello (come indicato nelle risposte accettate e in altre risposte).
Tutto quello che devi fare è aggiungere il $this->call('UsersTableSeeder');
metodo al run nella classe DatabaseSeeder ed eseguire php aristan db:seed
nella tua CLI che per impostazione predefinita eseguirà DatabaseSeeder.
Nota anche che stai usando un nome di classe plurale Users, mentre Laraval usa la forma singolare User. Se decidi di cambiare la tua classe nella forma singolare convenzionale, puoi semplicemente rimuovere il commento //$this->call('UserTableSeeder');
che è già stato assegnato ma commentato per impostazione predefinita nella classe DatabaseSeeder.