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
Patricia ArquetteOriginal
2024-10-25 07:32:28619Durchsuche

## 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;
}

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."]}

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,

Regeln zum Erstellen:

Fahren Sie wie gewohnt mit fort eindeutige Regel:

'email' => 'unique:users,email_address',

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!

Stellungnahme:
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