您可以編寫自定義驗證程序規則。該規則可能是這個樣子:
'unique_multiple:table,field1,field2,field3,...,fieldN'
該代碼會是這個樣子:
Validator::extend('unique_multiple', function ($attribute, $value, $parameters)
{
// Get table name from first parameter
$table = array_shift($parameters);
// Build the query
$query = DB::table($table);
// Add the field conditions
foreach ($parameters as $i => $field)
$query->where($field, $value[$i]);
// Validation result will be false if any rows match the combination
return ($query->count() == 0);
});
,只要你喜歡的狀態,您可以使用盡可能多的領域,只要保證值傳遞是一個包含字段值的數組,其順序與驗證規則中聲明的順序相同。所以你的驗證代碼看起來是這樣的:
$validator = Validator::make(
// Validator data goes here
array(
'unique_fields' => array('examdate_value', 'batch_value', 'chapter_value')
),
// Validator rules go here
array(
'unique_fields' => 'unique_multiple:exams,examdate,batch,chapter'
)
);
這是很棒的+1。我將把這個課程放在laravel 5.1中? – 2015-07-27 22:44:40
@MikeA查看[自定義驗證規則文檔](http://laravel.com/docs/5.1/validation#custom-validation-rules)。 – Bogdan 2015-07-28 00:22:10