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
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.
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