Heim  >  Artikel  >  Backend-Entwicklung  >  Wie validiere ich mehrere Spalten auf Eindeutigkeit in Laravel?

Wie validiere ich mehrere Spalten auf Eindeutigkeit in Laravel?

Linda Hamilton
Linda HamiltonOriginal
2024-10-31 10:10:02201Durchsuche

How to Validate Multiple Columns for Uniqueness in Laravel?

Validierung mehrerer Spalten auf Eindeutigkeit in Laravel

Das Validierungssystem von Laravel bietet eine bequeme Möglichkeit, sicherzustellen, dass die an Ihre Anwendung übermittelten Daten bestimmte Kriterien erfüllen . Eine häufige Anforderung besteht darin, sicherzustellen, dass bestimmte Spalten eindeutige Werte enthalten. Dies ist besonders nützlich, wenn Sie mit Tabellen arbeiten, die Daten wie Benutzerkonten oder Produktlisten speichern.

In Ihrem Fall haben Sie eine Tabelle namens „Server“ mit zwei Spalten, IP und Hostname. Sie möchten sicherstellen, dass die Kombination aus IP und Hostname eindeutig ist. Um dies zu erreichen, können Sie die Rule::unique-Regel von Laravel verwenden.

Das folgende Beispiel zeigt, wie die Validierungsregel implementiert wird:

<code class="php">use Illuminate\Validation\Rule;

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

Diese Validierungsregel prüft, ob die Kombination der Vorausgesetzt, IP und Hostname sind bereits in der Servertabelle vorhanden. Wenn dies der Fall ist, schlägt die Validierung fehl und es wird eine Fehlermeldung generiert.

Durch Anpassen des Where-Abschlusses können Sie die Eindeutigkeitsprüfung weiter verfeinern. Sie können beispielsweise die Aktualisierung des aktuellen Datensatzes ausschließen, indem Sie die Eigenschaft $this->id verwenden:

<code class="php">Rule::unique('servers')
    ->where(function ($query) use ($ip, $hostname) {
        return $query->where('ip', $ip)
            ->where('hostname', $hostname)
            ->where('id', '!=', $this->id);
    }),</code>

Diese Änderung stellt sicher, dass bei der Validierung nur andere Datensätze in der Tabelle und nicht der aktuelle berücksichtigt werden .

Das obige ist der detaillierte Inhalt vonWie validiere ich mehrere Spalten auf Eindeutigkeit 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