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