在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...
}
說明
結論
透過使用自訂where 條件的Rule::unique 規則,您可以有效確保Laravel 中多個列的唯一性。這種方法允許更具體和靈活的資料驗證,特別是在考慮初始查詢中提到的場景時。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3