Estou usando o Laravel 4.2.
o erro que você está vendo
[Illuminate\Database\Eloquent\MassAssignmentException]
username
na verdade, é porque o banco de dados está protegido de encher em massa, que é o que você está fazendo quando está executando um semeador. No entanto, em minha opinião, não é necessário (e pode ser inseguro) declarar quais campos devem ser preenchidos em seu modelo se você só precisar executar um semeador.
Em sua pasta de propagação, você tem a classe DatabaseSeeder:
class DatabaseSeeder extends Seeder {
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
Eloquent::unguard();
//$this->call('UserTableSeeder');
}
}
Esta classe atua como uma fachada, listando todos os seeders que precisam ser executados. Se você chamar o semeador UsersTableSeeder manualmente por meio do artisan, como fez com o php artisan db:seed --class="UsersTableSeeder"
comando, você ignora esta classe DatabaseSeeder.
Nesta classe DatabaseSeeder, o comando Eloquent::unguard();
permite atribuição temporária em massa em todas as tabelas, que é exatamente o que você precisa quando está propagando um banco de dados. Este método desprotegido só é executado quando você executa o php aristan db:seed
comando, portanto, é temporário em vez de tornar os campos preenchíveis em seu modelo (conforme declarado nas respostas aceitas e em outras).
Tudo o que você precisa fazer é adicionar o $this->call('UsersTableSeeder');
ao método run na classe DatabaseSeeder e executar php aristan db:seed
em sua CLI que, por padrão, executará DatabaseSeeder.
Observe também que você está usando um nome de classe plural Usuários, enquanto Laraval usa a forma singular Usuário. Se você decidir mudar sua classe para a forma singular convencional, você pode simplesmente descomentar o //$this->call('UserTableSeeder');
que já foi atribuído, mas comentado por padrão na classe DatabaseSeeder.