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' => '[email protected]',
'password' => '45678'
]);
User::create([
'username' => 'Stevo',
'email' => '[email protected]',
'password' => '45678'
]);
}
}
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.
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