2017-07-11 12 views
0

問題の概要を簡単に説明しても分かりません。 私は、ユーザーが氏名、姓、母親の姓、およびIDを渡すユーザー投票フォームを持っています。Laravelテーブル全体をチェックするのではなく、1行でデータを検証する方法

このデータをすべて格納するテーブルusersもあります。昨日、私はバグを見つけました。あるいは、ラベリング検証は、テーブルに存在するすべてのデータが見つかるたびにサブミットするため、ラベル検証がどのように機能するか誤解しました。

これは2つのレコードを持つテーブルです。私は、検証から期待何

は、ID = 98111091239名=アンジェイ姓= Pianowskiと母の姓=ミラかどうかを確認するためだった、すべてが正しいと投票ができ、その後一列に存在する場合のみ作られる。

代わりに、私は最初の行からIDを渡すことができます。他のものは2番目から受け取り、ユーザーも投票できます。 これはバグですか、ララベルはそのように動作しますか? 私は本当にどんなヒント、助け、sugestionsを楽しみにしています。

enter image description here

そして、ここで私は

/*This validates whether all data is correct */ 
    $validator = Validator::make($request->all(),[ 
    //check whether such pesel exists in votes and in voters 
     'pesel' =>'required|exists:wyborca|max:11|min:11', 
     'imie' =>'required|exists:wyborca|max:64|min:2', 
     'nazwisko' => 'required|exists:wyborca|max:128|min:2', 
     'nazwisko_matki' => 'required|exists:wyborca|max:128|min:2' 
     ]); 
    if($validator->fails()) 
    { 
    return back() 
     ->with('errors','Wprowadzono nieprawidłowe dane') 
     ->withInput(); 
    } 
+0

[ラーバル検証:追加の列条件 - カスタム検証規則あり]の可能な複製(https://stackoverflow.com/questions/26121417/laravel-validation-exists-with-additional-column-condition-custom-validation) ) – Maraboc

+0

いいえ、別の話題です –

答えて

1

を使用している検証ルールがありますこれらの値は、おそらく複数のレコードだけでなく、単一の一つに存在するので、バリデータは渡しているようです。

一つの解決策は、すべてのフィールドがリクエストに存在していることを確認した後、レコードが存在するかどうかを確認するために、簡単な雄弁クエリを実行するために検証するために、次のようになります。

$user = App\User::where('id', $request->id) 
    ->where('name', $request->name) 
    ->where('surname', $request->surname) 
    ->where('mother', $request->mother) 
    ->exists(); //true or false 

if($user){ 
//vote 
} 

return response()->json(['error' => 'user not found'], 404); 

それが存在しない場合は、票を投じますそれ以外の場合はエラーを返します。

+0

ありがとうございました!うまくいく –

関連する問題