Laravel:實現跨多個表列的唯一驗證
對於資料庫中包含多個列的表的情況,這些列的組合必須保持唯一,有必要在Laravel 應用程式中強制執行此唯一性約束。
一個這樣的範例是包含「ip」和「主機名稱」欄位的「伺服器」表。您希望確保特定“ip”和“主機名稱”的組合是唯一的,即使單一“ip”或“主機名稱”值可能出現多次。
使用規則的解決方案:: unique()
要實現此驗證,請使用 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」和「主機名稱」組合。
以上是如何在 Laravel 中跨多個列強制執行唯一驗證?的詳細內容。更多資訊請關注PHP中文網其他相關文章!