在 Laravel 中,唯一驗證規則確保指定資料庫列中值的唯一性。然而,在處理多個列時,驗證它們組合的唯一性並不簡單。
考慮到這個問題,我們在伺服器表中有兩列:ip 和主機名稱。要驗證具有特定 ip 值的新記錄與現有主機名稱值一起不存在於表中,我們可以利用 Rule::unique。
以下程式碼片段示範如何實現所需的驗證:
<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>
此驗證規則檢查伺服器表中是否已存在具有相同 ip 和主機名稱組合的記錄。如果是,則根據 $messages 中指定的自訂訊息傳回錯誤訊息。透過定義 where 閉包,我們可以指定唯一性的確切條件,確保同時考慮 ip 和主機名稱值。
以上是如何在 Laravel 中驗證多列的唯一性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!