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
Barbara StreisandOriginal
2024-10-24 17:49:021048Durchsuche

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>
  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>
  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>
  1. Für Für Kreationen verwenden Sie die Standard-Eindeutigkeitsregel:
<code class="php">'username' => 'required|unique:users,username',</code>

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!

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