Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak dodać regułę walidatora połączonych unikalnych pól w Laravel 4?

Możesz napisać niestandardową regułę walidatora. Reguła może wyglądać mniej więcej tak:

'unique_multiple:table,field1,field2,field3,...,fieldN'

Kod do tego wyglądałby mniej więcej tak:

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);
});

Możesz użyć dowolnej liczby pól dla warunku, po prostu upewnij się, że przekazana wartość jest tablicą zawierającą wartości pól w takiej samej kolejności, jak zadeklarowana w regule walidacji. Twój kod walidatora będzie wyglądał mniej więcej tak:

$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. Pisanie zapytania SQL do pozycji SELECT z poniższej tabeli

  2. Jak obliczyć współczynnik konwersji w MySQL?

  3. Spring Boot JPA MySQL:Nie udało się określić odpowiedniej klasy sterownika

  4. Jak ulepszyć to zapytanie MySQL za pomocą złączenia?

  5. TIME() Przykłady – MySQL