首頁  >  文章  >  後端開發  >  如何在 Laravel 中驗證多個列的唯一性?

如何在 Laravel 中驗證多個列的唯一性?

Linda Hamilton
Linda Hamilton原創
2024-11-01 12:18:30759瀏覽

How to Validate Uniqueness Across Multiple Columns in Laravel?

在Laravel 中驗證多列的唯一性

在Laravel 中驗證資料時,必須確保多列的唯一性以防止重複條目。這在多個值組合應該是唯一的場景中尤其重要,例如在提到的 IP 和主機名列都需要考慮唯一性的情況下。

多列上的唯一驗證

為了驗證多列的唯一性,Laravel 提供了 Rule::unique 規則。此規則可讓您指定驗證期間要考慮的表格和列。

自訂驗證規則

在給定場景中,目標是驗證 ip 字段,考慮到ip 和主機名列。要實現此目的,您可以使用如下所示的自訂規則:

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

說明

  • rule::unique 規則指定伺服器表,其中包含ip 和主機名列。
  • 規則中的 where 閉包定義了唯一性需要滿足的條件。在這種情況下,它會檢查 ip 和主機名稱是否與資料庫中的任何現有記錄相符。
  • 自訂錯誤訊息 Give ip and hostname are not unique 與 data.ip.unique 驗證規則相關聯。

結論

透過使用自訂 where 條件的 Rule::unique 規則,可以有效確保 Laravel 中多個欄位的唯一性。這種方法允許更具體和靈活的資料驗證,特別是在考慮初始查詢中提到的場景時。

以上是如何在 Laravel 中驗證多個列的唯一性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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