Laravel 如何验证一行中的数据,而不是整体检查 table
Laravel how to validate data in one row, not checking in whole table
我不确定我是否简要解释了问题所在。
我有一个用户投票表,用户在其中传递他的名字、姓氏、母亲的姓氏和 ID。
我还有一个 table users
来存储所有这些数据。昨天我发现了一个错误或者我误解了 laravel 验证是如何工作的,因为它每次都通过提交,当它找到 table.
中存在的所有数据时
这是一个有两条记录的table。
示例
我对验证的期望是检查 ID=98111091239 name=Andrzej surname=Pianowski 和 mother surname=Mila 并且只有当一切正确并且存在于一行中时才能进行投票。
相反,我可以从第一行传递 ID,从第二行传递其他内容,它还允许用户投票。
那是一个错误,laravel 是这样工作的还是什么?
我真的很期待任何提示、帮助、建议。
这是我正在使用的验证规则
/*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();
}
验证器似乎通过了,因为这些值可能存在于多条记录中,而不仅仅是一条记录。
一个解决方案是验证以确保请求中存在所有字段,然后执行简单的 Eloquent 查询以检查记录是否存在:
$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);
如果确实存在,请投票,否则return错误。
我不确定我是否简要解释了问题所在。 我有一个用户投票表,用户在其中传递他的名字、姓氏、母亲的姓氏和 ID。
我还有一个 table users
来存储所有这些数据。昨天我发现了一个错误或者我误解了 laravel 验证是如何工作的,因为它每次都通过提交,当它找到 table.
这是一个有两条记录的table。
示例
我对验证的期望是检查 ID=98111091239 name=Andrzej surname=Pianowski 和 mother surname=Mila 并且只有当一切正确并且存在于一行中时才能进行投票。
相反,我可以从第一行传递 ID,从第二行传递其他内容,它还允许用户投票。 那是一个错误,laravel 是这样工作的还是什么? 我真的很期待任何提示、帮助、建议。
这是我正在使用的验证规则
/*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();
}
验证器似乎通过了,因为这些值可能存在于多条记录中,而不仅仅是一条记录。
一个解决方案是验证以确保请求中存在所有字段,然后执行简单的 Eloquent 查询以检查记录是否存在:
$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);
如果确实存在,请投票,否则return错误。