Estoy usando Laravel 4.2.
el error que estas viendo
[Illuminate\Database\Eloquent\MassAssignmentException]
username
de hecho, se debe a que la base de datos está protegida contra el llenado en masa, que es lo que está haciendo cuando está ejecutando un sembrador. Sin embargo, en mi opinión, no es necesario (y podría ser inseguro) declarar qué campos deben ser rellenables en su modelo si solo necesita ejecutar un sembrador.
En su carpeta de inicialización tiene la clase DatabaseSeeder:
class DatabaseSeeder extends Seeder {
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
Eloquent::unguard();
//$this->call('UserTableSeeder');
}
}
Esta clase actúa como una fachada, enumerando todas las sembradoras que deben ejecutarse. Si llama al sembrador UsersTableSeeder manualmente a través de artisan, como hizo con el php artisan db:seed --class="UsersTableSeeder"
comando, omite esta clase DatabaseSeeder.
En esta clase de DatabaseSeeder, el comando Eloquent::unguard();
permite la asignación masiva temporal en todas las tablas, que es exactamente lo que necesita cuando está sembrando una base de datos. Este método de desprotección solo se ejecuta cuando ejecuta el php aristan db:seed
comando, por lo que es temporal en lugar de hacer que los campos se puedan completar en su modelo (como se indica en las respuestas aceptadas y otras).
Todo lo que necesita hacer es agregar el $this->call('UsersTableSeeder');
método de ejecución en la clase DatabaseSeeder y ejecutarlo php aristan db:seed
en su CLI, que de forma predeterminada ejecutará DatabaseSeeder.
También tenga en cuenta que está usando un nombre de clase plural Users, mientras que Laraval usa la forma singular User. Si decide cambiar su clase a la forma singular convencional, simplemente puede descomentar la //$this->call('UserTableSeeder');
que ya ha sido asignada pero comentada de forma predeterminada en la clase DatabaseSeeder.