U kunt een aangepaste validatorregel schrijven. De regel kan er ongeveer zo uitzien:
'unique_multiple:table,field1,field2,field3,...,fieldN'
De code daarvoor ziet er ongeveer zo uit:
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);
});
U kunt zoveel velden gebruiken als u wilt voor de voorwaarde, maar zorg ervoor dat de doorgegeven waarde een array is met de waarden van de velden in dezelfde volgorde als aangegeven in de validatieregel. Uw validatorcode ziet er dus ongeveer zo uit:
$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'
)
);