Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да добавите комбинирано правило за валидиране на уникални полета в Laravel 4

Можете да напишете персонализирано правило за валидиране. Правилото може да изглежда така:

'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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL функция SELECT за сумиране на текущите данни

  2. Как да извлечете качени файлове с помощта на php

  3. MySQL PHP несъвместимост

  4. Изпълни ли INSERT, ако таблицата е празна?

  5. MySQL кръгла дата до началото на седмицата и месеца