J'utilise Laravel 4.2.
l'erreur que vous voyez
[Illuminate\Database\Eloquent\MassAssignmentException]
username
C'est en effet parce que la base de données est protégée contre le remplissage en masse, ce que vous faites lorsque vous exécutez un semeur. Cependant, à mon avis, il n'est pas nécessaire (et peut ne pas être sûr) de déclarer les champs qui doivent être remplis dans votre modèle si vous avez seulement besoin d'exécuter un semoir.
Dans votre dossier d'amorçage, vous avez la classe DatabaseSeeder:
class DatabaseSeeder extends Seeder {
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
Eloquent::unguard();
//$this->call('UserTableSeeder');
}
}
Cette classe agit comme une façade, listant tous les seeders qui doivent être exécutés. Si vous appelez manuellement le semoir UsersTableSeeder via artisan, comme vous l'avez fait avec la php artisan db:seed --class="UsersTableSeeder"
commande, vous contournez cette classe DatabaseSeeder.
Dans cette classe DatabaseSeeder, la commande Eloquent::unguard();
permet une affectation en masse temporaire sur toutes les tables, ce qui est exactement ce dont vous avez besoin lorsque vous amorcez une base de données. Cette méthode non protégée n'est exécutée que lorsque vous exécutez la php aristan db:seed
commande, elle est donc temporaire par opposition à rendre les champs remplissables dans votre modèle (comme indiqué dans les réponses acceptées et autres).
Tout ce que vous avez à faire est d'ajouter la $this->call('UsersTableSeeder');
à la méthode run dans la classe DatabaseSeeder et de l'exécuter php aristan db:seed
dans votre CLI qui exécutera par défaut DatabaseSeeder.
Notez également que vous utilisez un nom de classe pluriel Utilisateurs, tandis que Laraval utilise la forme singulière Utilisateur. Si vous décidez de changer votre classe à la forme singulière conventionnelle, vous pouvez simplement décommenter le //$this->call('UserTableSeeder');
qui a déjà été attribué mais commenté par défaut dans la classe DatabaseSeeder.