Wie erzwinge ich eine eindeutige Validierung über mehrere Spalten in Laravel?

DDD
Freigeben: 2024-10-30 06:35:02
Original
255 Leute haben es durchsucht

How to Enforce Unique Validation Across Multiple Columns in Laravel?

Laravel: Erreichen einer eindeutigen Validierung über mehrere Tabellenspalten hinweg

Für Szenarien, in denen Sie eine Datenbank mit Tabellen haben, die mehrere Spalten enthalten, deren Kombination eindeutig bleiben muss , wird es notwendig, diese Eindeutigkeitsbeschränkung in Ihrer Laravel-Anwendung durchzusetzen.

Ein solches Beispiel ist eine „Server“-Tabelle mit den Spalten „IP“ und „Hostname“. Sie möchten sicherstellen, dass eine Kombination aus einer bestimmten „IP“ und einem „Hostnamen“ eindeutig ist, auch wenn einzelne Werte für „IP“ oder „Hostname“ möglicherweise mehrmals vorkommen.

Lösung mit Regel:: unique()

Um diese Validierung zu implementieren, verwenden Sie die Methode Rule::unique. Mit dieser Methode können Sie benutzerdefinierte eindeutige Regeln für einen bestimmten Satz von Spalten festlegen. Hier ist ein Beispiel:

<code class="php">$messages = [
    'data.ip.unique' => 'Given ip and hostname are not unique',
];

Validator::make($data, [
    'data.ip' => [
        'required',
        Rule::unique('servers')
            ->where(function ($query) use ($ip, $hostname) {
                return $query->where('ip', $ip)
                    ->where('hostname', $hostname);
            }),
    ],
], $messages);</code>
Nach dem Login kopieren

Erklärung

  • Mit dem Abschluss „where()“ können Sie zusätzliche Einschränkungen für die Eindeutigkeitsregel definieren. In diesem Fall wird angegeben, dass sowohl die Spalten „ip“ als auch „hostname“ übereinstimmen müssen, damit die Validierung fehlschlägt.
  • Mit der Methode „unique()“ können Sie die Tabelle angeben, auf die die eindeutige Regel angewendet werden soll . In diesem Fall handelt es sich um die Tabelle „Server“.
  • Die „erforderliche“ Regel stellt sicher, dass der Benutzer einen „IP“-Wert bereitstellt.
  • Das Array „Nachrichten“ passt die Fehlermeldung an, die angezeigt wird, wenn Die Validierung schlägt fehl.

Durch die Implementierung dieser Regel stellen Sie effektiv sicher, dass Ihre Anwendung doppelte Kombinationen von „IP“ und „Hostname“ in der Tabelle „Server“ nicht zulässt.

Das obige ist der detaillierte Inhalt vonWie erzwinge ich eine eindeutige Validierung über mehrere Spalten in Laravel?. 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!