Heim > Backend-Entwicklung > PHP-Tutorial > ## Wie aktualisiere ich Modelle mit eindeutigen Validierungsregeln in Laravel ohne Fehler?

## Wie aktualisiere ich Modelle mit eindeutigen Validierungsregeln in Laravel ohne Fehler?

Patricia Arquette
Freigeben: 2024-10-25 07:32:28
Original
641 Leute haben es durchsucht

## How to Update Models with Unique Validation Rules in Laravel Without Errors?

Laravel: Modelle mit eindeutigen Validierungsregeln aktualisieren

Beim Aktualisieren von Modellen in Laravel ist die Sicherstellung der Datenintegrität durch Validierung von entscheidender Bedeutung. Allerdings können eindeutige Validierungsregeln für Attribute wie Benutzername und E-Mail eine Herausforderung darstellen.

Problemstellung

In einem hypothetischen Benutzermodell, bei dem Benutzername und E-Mail eindeutige Validierungsregeln haben, Das Aktualisieren eines Datensatzes mithilfe eines Repositorys kann Validierungsfehler auslösen:

public function update($id, $data) {
    $user = $this->findById($id);
    $user->fill($data);
    $this->validate($user->toArray());
    $user->save();
    return $user;
}
Nach dem Login kopieren

Dies schlägt beim Testen fehl und gibt Folgendes zurück:

ValidationException: {"username":["The username has already been taken."],"email":["The email has already been taken."]}
Nach dem Login kopieren

Lösung: Eindeutige Regeln für die aktuelle Instanz ignorieren

Um dieses Problem elegant zu lösen, kann die eindeutige Validierungsregel für die aktuelle Instanz, die aktualisiert wird, ignoriert werden.

  1. Übergeben Sie die Instanz-ID an den Validator:

    Übergeben Sie in der Repository-Methode die ID der Instanz, die aktualisiert wird, an die Validierungsmethode.

  2. Verwenden Sie einen Parameter im Validator, um zwischen zu unterscheiden Erstellung und Aktualisierung:

    Fügen Sie in den Validierungsregeln einen Parameter hinzu, der angibt, ob es sich bei dem Vorgang um eine Aktualisierung oder eine Erstellung handelt.

Regeln für die Aktualisierung :

Erzwingen Sie, dass die eindeutige Regel die aktuelle ID ignoriert:

'email' => 'unique:users,email_address,' . $userId,
Nach dem Login kopieren

Regeln zum Erstellen:

Fahren Sie wie gewohnt mit fort eindeutige Regel:

'email' => 'unique:users,email_address',
Nach dem Login kopieren

Durch die Einbindung dieser Änderungen können eindeutige Validierungsregeln erzwungen werden, ohne Aktualisierungen für vorhandene Datensätze zu behindern.

Das obige ist der detaillierte Inhalt von## Wie aktualisiere ich Modelle mit eindeutigen Validierungsregeln in Laravel ohne Fehler?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage