」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何在 Laravel 中驗證多個列的唯一性?

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

發佈於2024-11-07
瀏覽:908

How to Validate Uniqueness Across Multiple Columns in Laravel?

在Laravel 中驗證多列的唯一性

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

多列上的唯一驗證

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

自訂驗證規則

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

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

說明

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

結論

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

最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3