首頁  >  文章  >  後端開發  >  如何在 Laravel 中使用 Rule::unique 實現多列唯一驗證?

如何在 Laravel 中使用 Rule::unique 實現多列唯一驗證?

Susan Sarandon
Susan Sarandon原創
2024-10-29 05:21:021039瀏覽

How to Implement Multi-Column Unique Validation Using Rule::unique in Laravel?

在Laravel 中利用Rule::unique 進行多列唯一驗證

在你的Laravel 應用程式中,你有一個名為「servers」的表格有兩列:「ip」和「主機名稱」。您希望確保這兩列的組合是唯一的,以防止重複條目。雖然您已經為“ip”列實現了驗證規則,但您的目標是擴展此邏輯以也包括“主機名稱”列。

要實現這種多列唯一驗證,您可以利用 Laravel 的規則::獨特的方法。以下是驗證規則的修改版本:

<code class="php">$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>

說明:

  • Rule::unique('servers') ::指定驗證規則應套用於「伺服器」表。
  • where:用於根據附加條件過濾唯一檢查。在本例中,我們按“ip”和“主機名稱”列進行過濾。
  • $ip** 和**$hostname:假定這些變數包含您的值
  • $messages:一個可選數組,允許您自訂驗證失敗時顯示的錯誤訊息。

此更新的驗證規則將確保「ip」和「主機名稱」值的組合在「伺服器」表中是唯一的,有效防止具有相同 IP 和主機名稱的重複條目。

以上是如何在 Laravel 中使用 Rule::unique 實現多列唯一驗證?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn