Heim > Backend-Entwicklung > PHP-Tutorial > Wie kann man Laravel-Modelle mit eindeutigen Einschränkungen während Aktualisierungen erneut validieren?

Wie kann man Laravel-Modelle mit eindeutigen Einschränkungen während Aktualisierungen erneut validieren?

Barbara Streisand
Freigeben: 2024-10-24 17:49:02
Original
1023 Leute haben es durchsucht

How to Revalidate Laravel Models with Unique Constraints During Updates?

Laravel-Modell mit eindeutigen Einschränkungen während der Aktualisierung erneut validieren

Bei der Arbeit mit Laravel-Eloquent-Modellen, die eindeutige Validierungsregeln erzwingen, kann die Aktualisierung des Modells eine Validierung auslösen Fehler, wenn die geänderten Werte mit vorhandenen Datensätzen übereinstimmen. Um dieses Problem zu beheben, überprüfen Entwickler bei der Aktualisierung häufig die Attribute des Modells erneut. Dieser Ansatz kann jedoch zu Problemen bei der erforderlichen Regelvalidierung führen.

Im bereitgestellten Beispiel validiert die Update-Methode im Repository die Attribute des Modells mithilfe der Validate-Methode. Bei dieser Validierung gelten jedoch dieselben eindeutigen Regeln wie beim Erstellen eines neuen Modells. Infolgedessen schlägt die Validierung beim Aktualisieren des Modells mit vorhandenen Werten fehl.

Um dieses Problem zu beheben, können Sie die Validierungsregeln anpassen, um die ID der zu aktualisierenden Instanz zu ignorieren.

Validierungsregeln anpassen:

  1. Übergeben Sie die ID der Modellinstanz an den Validator:
<code class="php">$user = $this->findById($id);
$user->fill($data);
$this->validate($user->toArray(), ['id' => $user->id]);</code>
Nach dem Login kopieren
  1. Verwenden Sie im Validator einen Parameter, um Unterscheiden Sie zwischen Updates und Kreationen:
<code class="php">// Validation rules
'username' => Validator::make($data, [
    'username' => 'required|unique:users,username,' . ($id ?? null),
]);</code>
Nach dem Login kopieren
  1. Für Updates erzwingen Sie, dass die eindeutige Regel die angegebene ID ignoriert:
<code class="php">'username' => 'required|unique:users,username,' . ($id ?? null),</code>
Nach dem Login kopieren
  1. Für Für Kreationen verwenden Sie die Standard-Eindeutigkeitsregel:
<code class="php">'username' => 'required|unique:users,username',</code>
Nach dem Login kopieren

Durch die Einbindung dieser Anpassung ignoriert das Framework die Eindeutigkeitsbeschränkung für die vorhandene ID, sodass Sie das Modell aktualisieren können, ohne Validierungsfehler aufgrund von Duplikaten auszulösen Feldwerte.

Das obige ist der detaillierte Inhalt vonWie kann man Laravel-Modelle mit eindeutigen Einschränkungen während Aktualisierungen erneut validieren?. 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