Ich benutze Laravel 4.2.
der Fehler, den Sie sehen
[Illuminate\Database\Eloquent\MassAssignmentException]
username
Dies liegt in der Tat daran, dass die Datenbank vor massenhaftem Füllen geschützt ist, was Sie tun, wenn Sie einen Seeder ausführen. Meiner Meinung nach ist es jedoch nicht erforderlich (und möglicherweise unsicher) anzugeben, welche Felder in Ihrem Modell ausgefüllt werden sollen, wenn Sie nur einen Seeder ausführen müssen.
In Ihrem Seeding-Ordner befindet sich die DatabaseSeeder-Klasse:
class DatabaseSeeder extends Seeder {
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
Eloquent::unguard();
//$this->call('UserTableSeeder');
}
}
Diese Klasse fungiert als Fassade und listet alle Sämaschinen auf, die ausgeführt werden müssen. Wenn Sie den UsersTableSeeder-Seeder manuell über artisan aufrufen, wie Sie es mit dem php artisan db:seed --class="UsersTableSeeder"
Befehl getan haben , umgehen Sie diese DatabaseSeeder-Klasse.
In dieser DatabaseSeeder-Klasse ermöglicht der Befehl Eloquent::unguard();
die temporäre Massenzuweisung für alle Tabellen. Dies ist genau das, was Sie beim Seeding einer Datenbank benötigen. Diese unguard-Methode wird nur ausgeführt, wenn Sie die ausführenphp aristan db:seed
Befehl ist daher nur vorübergehend, die Felder in Ihrem Modell ausfüllbar zu machen (wie in den akzeptierten und anderen Antworten angegeben).
Sie müssen lediglich die $this->call('UsersTableSeeder');
Ausführungsmethode in der DatabaseSeeder-Klasse hinzufügen und php aristan db:seed
in Ihrer CLI ausführen, die standardmäßig DatabaseSeeder ausführt.
Beachten Sie auch, dass Sie einen Plural-Klassennamen Benutzer verwenden, während Laraval die Singularform Benutzer verwendet. Wenn Sie Ihre Klasse in die herkömmliche Singularform ändern möchten, können Sie einfach //$this->call('UserTableSeeder');
die bereits zugewiesene, aber standardmäßig auskommentierte Klasse in der DatabaseSeeder-Klasse auskommentieren.