Heim >Backend-Entwicklung >PHP-Tutorial >Wie validiere ich die Eindeutigkeit über mehrere Spalten hinweg in Laravel?

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

Linda Hamilton
Linda HamiltonOriginal
2024-11-01 12:18:30882Durchsuche

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 besonders relevant in Szenarien, in denen mehrere Wertekombinationen eindeutig sein sollten, wie beispielsweise im erwähnten 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:

<code class="php">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...
}</code>

Erklärung

  • Die Regel::unique-Regel gibt die Servertabelle an. die die Spalten IP und Hostname enthält.
  • Der Where-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 die IP-Adresse als auch der Hostname mit vorhandenen Datensätzen in der Datenbank übereinstimmen.
  • Die benutzerdefinierte Fehlermeldung „Angegebene IP-Adresse 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 hinweg 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.

Das obige ist der detaillierte Inhalt vonWie validiere ich die Eindeutigkeit über mehrere Spalten hinweg in Laravel?. 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