2015-03-21 3 views
5

Gibt es eine Möglichkeit in Laravel 5 zu überprüfen, ob ein Wert mit dem Wert aus der Datenbank übereinstimmt?Validierungsprüfung (wenn 1 gleich einem Wert aus der Datenbank ist) Laravel 5

Hier ist, was ich versuche zu tun: Ich habe Tabelle users und in der Tabelle Benutzer habe ich zusätzliche Spalte admin_id. Bei der Validierung muss überprüft werden, ob die admin_id Datenbank der Form 1 entspricht.

Hier ist meine aktuellen Code:

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

Antwort

3

Ich weiß nicht, was ist users hier eingeben - ist es, wenn von users Tabelle? Wenn ja, können Sie dann erstellen Sie Ihre Regeln auf diese Weise:

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

So, jetzt wird es überprüft werden, wenn usersuser_id von users Tabelle übereinstimmt, wo admin_id1 entspricht.

Sie sollten auch Laravel 5 Anfragen Objekte überprüfen, um Eingaben zu validieren. Es ist viel sauberer als Code in Controller/Model/Repository zu setzen. More about Requst Validation.

+0

Großen Dank! :) Bearbeiten Sie das einfach: 'users' => 'required | exists: Benutzer, id, admin_id, 1' –

+0

Irgendein Tutorial dazu: "Sie sollten auch Laravel 5 Requests Objekte in Betracht ziehen, um Eingaben zu validieren." –

+0

@ user2158982 http://laravel.com/docs/5.0/validation#form-request-validation sollte ausreichen. Sie könnten auch auf https://laracasts.com/ –

0

$rules = array( 'users' => 'exists:users,admin_id' ); wo Benutzer Tabellennamen. Kann sehen, dass Sie auch Benutzer als Formularfeldname verwenden möchten

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

Oder wenn die ADMIN_ID dynamisch ist, dann verwenden:

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