Problem
Ich habe ein Laravel -Benutzermodell, in dem ich eindeutige Validierungsregel zu Benutzernamen und E -Mail hinzugefügt habe. Wenn ich meinen Benutzer nun über mein Repo aktualisiere und mein Modell neu validieren möchte, bekomme ich einen Fehler. So sieht meine Update -Methode aus
öffentliche Funktion Update ($ id, $ data)Dies schlägt beim Testen mit dem Testen mit
ValidationException: "Benutzername": ["Der Benutzername wurde bereits genommen."]],Gibt es eine Möglichkeit, dies elegant zu beheben??
Lösung
Dies ist ein häufiger Fehler in Laravel, wenn Sie etwas aktualisieren. Standardmäßig erfordern es eine ID als Schlüssel, um dem vorhandenen Eintrag zu entsprechen. Sie müssen also die ID der derzeit aktualisierten Instanz an den Validator anhängen.
Geben Sie die ID Ihrer Instanz über, um den eindeutigen Validator zu ignorieren.
Verwenden Sie im Validator einen Parameter, um festzustellen, ob Sie die Ressource aktualisieren oder erstellen.
Wenn Sie aktualisieren, erzwingen Sie die eindeutige Regel, um eine bestimmte ID zu ignorieren: