Laravel: Aktualisieren eines Modells mit eindeutigen Validierungsregeln
In Laravel ist die Validierung von Feldern während Modellaktualisierungen von entscheidender Bedeutung, um die Datenintegrität sicherzustellen. Allerdings können eindeutige Validierungsregeln Probleme beim Aktualisieren vorhandener Datensätze verursachen.
Betrachten Sie den folgenden Code in einer Repository-Klasse:
<code class="php">public function update($id, $data) { $user = $this->findById($id); $user->fill($data); $this->validate($user->toArray()); $user->save(); return $user; }</code>
Dieser Code versucht, die Felder des Modells erneut zu validieren, einschließlich eindeutiger Felder wie „Benutzername“ und „E-Mail“. Dieser Ansatz kann jedoch zu Validierungsfehlern führen, wenn versucht wird, Datensätze mit vorhandenen eindeutigen Werten zu aktualisieren.
Um dieses Problem zu beheben, müssen wir den aktuellen Datensatz von der Validierung ausschließen, um Aktualisierungen ohne Verletzung eindeutiger Einschränkungen zu ermöglichen. Dies können wir erreichen, indem wir die ID der zu aktualisierenden Instanz an den Validator anhängen. So geht's:
Übergeben Sie die ID der Instanz:
Übergeben Sie die ID der Instanz, die aktualisiert wird, an die Aktualisierungsmethode:
<code class="php">public function update($id, $data) { $user = $this->findById($id); $user->fill($data); $this->validate($user->toArray(), ['id' => $id]); $user->save(); }</code>
Den aktuellen Datensatz von der Validierung ausschließen:
Im Validator verwenden wir den ID-Parameter, um zu erkennen, ob wir die Ressource aktualisieren oder erstellen:
Aktualisierung: Für eindeutige Validierungsregeln hängen Sie ,{$id} an die Regel an, um den aktuellen Datensatz auszuschließen. Zum Beispiel:
<code class="php">'email' => 'unique:users,email,{$id}',</code>
Erstellen: Geben Sie bei eindeutigen Validierungsregeln die ID nicht an. Zum Beispiel:
<code class="php">'email' => 'unique:users,email',</code>
Indem wir diese Schritte befolgen, können wir Laravel-Modelle elegant aktualisieren und gleichzeitig sicherstellen, dass einzigartige Validierungsbeschränkungen respektiert werden.
Das obige ist der detaillierte Inhalt vonWie aktualisiere ich ein Laravel-Modell mit eindeutigen Validierungsregeln ohne Fehler?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!