2015-03-21 17 views
5

C'è qualche modo in Laravel 5 per verificare se qualche valore equivale al valore del database?Controllo di convalida (se 1 è uguale a qualche valore dal database) Laravel 5

Ecco ciò che cerco di fare: ho il tavolo users e negli utenti della tabella ho una colonna aggiuntiva admin_id. In convalida, devo verificare se il database del modulo admin_id è uguale a 1.

Ecco il mio codice corrente:

$inputs = array(
     'projects' => Input::get('project'), 
     'users' => Input::get('workers') 

    ); 

    $rules = array(
     'projects' => 'required', 
     'users' => 'required' 
    ); 

    $validator = Validator::make($inputs,$rules); 
    if($validator->fails()){ 
     return false;    
     }else{ 
     return true; 
    } 

risposta

3

Non so cosa sia l'input users qui - è se dalla tabella users? Se sì, è possibile creare le regole in questo modo:

$rules = array(
     'projects' => 'required', 
     'users' => ['required', 'exists:users,id,admin_id,1'] 
    ); 

Così ora si verificherà se users corrisponde user_id da users tavolo dove admin_id uguale 1.

Si consiglia inoltre di considerare Laravel 5 Richieste oggetti per convalidare l'input. È molto più pulito che inserire il codice in Controller/Model/Repository. More about Requst Validation.

+0

Great thanks! :) Modifica questo: 'users' => 'required | exists: users, id, admin_id, 1' –

+0

Qualsiasi tutorial per questo: "Dovresti considerare anche gli oggetti Laravel 5 Requests per convalidare l'input." –

+0

@ user2158982 http://laravel.com/docs/5.0/validation#form-request-validation dovrebbe essere sufficiente. Puoi anche guardare https://laracasts.com/ –

0

$rules = array( 'users' => 'exists:users,admin_id' ); in cui il nome della tabella degli utenti. Puoi vederti anche voler usare gli utenti come nome del campo modulo

0
$rules = array(
     'projects' => 'required', 
     'users' => [ 
      'required', 
      Rule::exists('users', 'id')->where(function ($query) { 
       $query->where('admin_id', 1); 
      }), 
     ], 
    ); 

O se l'admin_id è dinamico, quindi utilizzare:

$variable = 1; 
    $rules = array(
     'projects' => 'required', 
     'users' => [ 
      'required', 
      Rule::exists('users', 'id')->where(function ($query) use ($variable) { 
       $query->where('admin_id', $variable); 
      }), 
     ], 
    ); 
Problemi correlati