Sie könnten eine benutzerdefinierte Validierungsregel schreiben. Die Regel könnte etwa so aussehen:
'unique_multiple:table,field1,field2,field3,...,fieldN'
Der Code dafür würde in etwa so aussehen:
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);
});
Sie können beliebig viele Felder für die Bedingung verwenden, stellen Sie nur sicher, dass der übergebene Wert ein Array ist, das die Werte der Felder in derselben Reihenfolge enthält, wie sie in der Validierungsregel deklariert ist. Ihr Validierungscode würde also etwa so aussehen:
$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'
)
);