Php Laravel如何验证一行中的数据,而不是签入整个表
我不确定我是否简要解释了问题的原因。 我有一个用户投票表,其中用户通过他的名字、姓氏、母亲的姓氏和ID 我还有一个存储所有这些数据的表Php Laravel如何验证一行中的数据,而不是签入整个表,php,mysql,laravel,validation,laravel-validation,Php,Mysql,Laravel,Validation,Laravel Validation,我不确定我是否简要解释了问题的原因。 我有一个用户投票表,其中用户通过他的名字、姓氏、母亲的姓氏和ID 我还有一个存储所有这些数据的表users。昨天我发现了一个bug,或者我误解了laravel验证的工作原理,因为它每次发现表中存在的所有数据时都通过了提交 这是一张有两条记录的表 示例 我从验证中所期望的是检查ID=98111091239 name=Andrzej姓氏=Pianowski和母亲姓氏=Mila,并且只有在所有内容都正确且存在于一行时,才能进行投票 相反,我可以从第一行传递ID,从
users
。昨天我发现了一个bug,或者我误解了laravel验证的工作原理,因为它每次发现表中存在的所有数据时都通过了提交
这是一张有两条记录的表
示例
我从验证中所期望的是检查ID=98111091239 name=Andrzej姓氏=Pianowski和母亲姓氏=Mila,并且只有在所有内容都正确且存在于一行时,才能进行投票
相反,我可以从第一行传递ID,从第二行传递其他内容,它还允许用户投票。
那是虫子吗,拉威尔是这样工作的还是怎么的?
我真的很期待任何提示、帮助和建议
这是我使用的验证规则
/*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();
}
验证器似乎正在传递,因为这些值可能存在于多个记录中,而不仅仅是一个记录 一种解决方案是验证以确保请求中存在所有字段,然后执行简单的雄辩查询以检查记录是否存在:
$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);
如果确实存在,请投票,否则返回错误。可能重复Nope,这是不同的主题