Podría escribir una regla de validación personalizada. La regla podría verse así:
'unique_multiple:table,field1,field2,field3,...,fieldN'
El código para eso se vería así:
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);
});
Puede usar tantos campos como desee para la condición, solo asegúrese de que el valor pasado sea una matriz que contenga los valores de los campos en el mismo orden declarado en la regla de validación. Entonces, su código de validación se vería así:
$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'
)
);