Php Laravel如何验证一行中的数据,而不是签入整个表

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,从

我不确定我是否简要解释了问题的原因。 我有一个用户投票表,其中用户通过他的名字、姓氏、母亲的姓氏和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,这是不同的主题