2017-06-08 1 views
0

Existe-t-il un moyen de référencer un autre champ lors de la spécification de la règle de validation existante dans Laravel?Validation Laravel: existe deux colonnes même ligne

Ma demande:

public function rules() 
    { 

     return [ 
      'numero_de_somme' => 'unique:personnels,numero_de_somme|exists:fonctionnaire,num_somme', 
      'cin' => 'unique:personnels,cin|exists:fonctionnaire,cin', 

     ]; 
    } 

dans mes règles de validation Je veux être en mesure de faire en sorte que:

  • num_somme existe dans la table fonctionnaire
  • cin existe dans la table de fonctionnaire et cin entrée doit être sur la même ligne de la num_somme

num_somme: 12 345 cin: s89745

num_somme: 78945 cin: U10125

Explication: par exemple

  • 1er scénario si l'entrée num_somme = 12345 et cin = U10125 la validation doit
  • 2ème scénario si l'entrée num_somme = 12345 et cin = s89745 le val l'idation doit réussir

J'espère que cela a du sens.

Merci

Répondre

0

i réussi à le résoudre en utilisant la méthode la plus simple

  • pour numero_de_somme

'numero_de_somme' => 'unique:personnels,numero_de_somme|exists:fonctionnaire,num_somme,cin,'.Request::get('cin'),

  • pour cin

'cin' => 'unique:personnels,cin|exists:fonctionnaire,cin',

PS.ne pas oublier d'appeler use Illuminate\Http\Request;

0

je suis tombé sur le même besoin aujourd'hui et je pense avoir une solution utilisant la classe de la règle de validation: Rule example.

Voici mon scénario: J'ai un tableau de vérification des courriels et je veux m'assurer qu'un code machine et un code d'activation ont été transmis sur la même ligne.

Assurez-vous d'inclure use Illuminate\Validation\Rule;

$activationCode = $request->activation_code;         

$rules = [                  
    'mc' => [                 
     'required',                
     Rule::exists('email_verifications', 'machineCode')      
     ->where(function ($query) use ($activationCode) {      
      $query->where('activationCode', $activationCode);     
     }),                  
    ],                   
    'activation_code' => 'required|integer|min:5',        
    'operating_system' => 'required|alpha_num|max:45'       
]; 

Le premier argument de la méthode existe est la table et le second est le nom de colonne personnalisée J'utilise pour le champ « mc ». Je passe la deuxième colonne que je veux vérifier en utilisant le mot-clé 'use', puis j'utilise ce champ dans une clause where.