在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>
說明
結論
透過使用自訂 where 條件的 Rule::unique 規則,可以有效確保 Laravel 中多個欄位的唯一性。這種方法允許更具體和靈活的資料驗證,特別是在考慮初始查詢中提到的場景時。
以上是如何在 Laravel 中驗證多個列的唯一性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!