„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie validiere ich die Eindeutigkeit über mehrere Spalten hinweg in Laravel?

Wie validiere ich die Eindeutigkeit über mehrere Spalten hinweg in Laravel?

Veröffentlicht am 07.11.2024
Durchsuche:327

How to Validate Uniqueness Across Multiple Columns in Laravel?

Validierung der Eindeutigkeit mehrerer Spalten in Laravel

Bei der Validierung von Daten in Laravel ist es wichtig, die Eindeutigkeit über mehrere Spalten hinweg sicherzustellen, um doppelte Einträge zu verhindern. Dies ist insbesondere in Szenarien relevant, in denen mehrere Wertekombinationen eindeutig sein sollten, wie beispielsweise im genannten Fall, in dem sowohl IP- als auch Hostnamenspalten auf Eindeutigkeit geprüft werden müssen.

Eindeutige Validierung für mehrere Spalten

Um die Eindeutigkeit mehrerer Spalten zu validieren, stellt Laravel die Regel Rule::unique bereit. Mit dieser Regel können Sie die Tabelle und Spalten angeben, die bei der Validierung berücksichtigt werden sollen.

Benutzerdefinierte Validierungsregel

Im gegebenen Szenario besteht das Ziel darin, das IP-Feld unter Berücksichtigung zu validieren sowohl die IP- als auch die Hostnamen-Spalte. Um dies zu erreichen, können Sie eine benutzerdefinierte Regel wie die folgende verwenden:

use Illuminate\Validation\Rule;

$data = [
    'ip' => '192.168.0.1',
    'hostname' => 'server-1',
];

$messages = [
    'data.ip.unique' => 'Given ip and hostname are not unique',
];

Validator::make($data, [
    'ip' => [
        'required',
        Rule::unique('servers')
            ->where(function ($query) use ($ip, $hostname) {
                return $query->where('ip', $ip)->where('hostname', $hostname);
            }),
    ],
], $messages);

if ($validator->fails()) {
    // Handle validation errors...
}

Erläuterung

  • Die Regel „rule::unique“ gibt die Servertabelle an, die die Spalten „ip“ und „hostname“ enthält.
  • Das Wo Der Abschluss innerhalb der Regel definiert die Bedingungen, die für die Eindeutigkeit erfüllt sein müssen. In diesem Fall wird geprüft, ob sowohl IP als auch Hostname mit vorhandenen Datensätzen in der Datenbank übereinstimmen.
  • Die benutzerdefinierte Fehlermeldung „Angegebene IP und Hostname sind nicht eindeutig“ ist mit der Validierungsregel „data.ip.unique“ verknüpft.

Fazit

Durch die Verwendung der Rule::unique-Regel mit benutzerdefinierten Where-Bedingungen können Sie die Eindeutigkeit über mehrere Spalten in Laravel effektiv sicherstellen. Dieser Ansatz ermöglicht eine spezifischere und flexiblere Datenvalidierung, insbesondere wenn Szenarien wie das in der ersten Abfrage erwähnte berücksichtigt werden.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3