MassAssignmentException in Laravel

Ich bin ein Laravel-Neuling. Ich möchte meine Datenbank seeden. Wenn ich den Seed-Befehl ausführe, erhalte ich eine Ausnahme

  [Illuminate\Database\Eloquent\MassAssignmentException]
  username

db:seed [--class[="..."]] [--database[="..."]]

Was mache ich falsch? Der Befehl, den ich verwende, lautet:

php artisan db:seed --class="UsersTableSeeder"

Meine Saatgutklasse ist wie folgt:

class UsersTableSeeder extends Seeder {
    public function run()
    {
            User::truncate();
            User::create([
                'username' => 'PaulSheer',
                'email' => 'psheer@rute.co.za',
                'password' => '45678'
            ]);

            User::create([
                'username' => 'Stevo',
                'email' => 'steve@rute.co.za',
                'password' => '45678'
            ]);
    }
}
Lösung

Lesen Sie diesen Abschnitt des Laravel-Dokuments: http://laravel.com/docs/eloquent#mass-assignment

Laravel bietet standardmäßig einen Schutz gegen Massenzuweisung Sicherheitsprobleme. Deshalb müssen Sie manuell festlegen, welche Felder massenhaft zugewiesen werden können:

class User extends Model
{
    protected $fillable = ['username', 'email', 'password'];
}

Warnung : Seien Sie vorsichtig, wenn Sie die massenhafte Zuweisung kritischer Felder wie Passwort oder Rolle erlauben. Dies könnte zu einem Sicherheitsproblem führen, da Benutzer die Werte dieser Felder aktualisieren könnten, obwohl Sie dies nicht wollen.

Kommentare (9)

Ich war die MassAssignmentException erhalten, wenn ich mein Modell wie folgt erweitert haben.

class Upload extends Eloquent {

}

Ich habe versucht, Array wie folgt einzufügen

Upload::create($array);//$array was data to insert.

Problem wurde behoben, als ich das Upload Model als

class Upload extends Eloquent {
    protected $guarded = array();  // Important
}

Referenz https://github.com/aidkit/aidkit/issues/2#issuecomment-21055670

Kommentare (0)

Wenn Sie Tabellen und Felder in der Datenbank haben, können Sie einfach diesen Befehl verwenden:

php artisan db:seed --class=UsersTableSeeder --database=YOURDATABSE
Kommentare (0)