Laravel电子邮件更新验证

时间:2018-04-20 07:57:22

标签: laravel validation laravel-5

我在更新电子邮件时遇到问题。 idprnrfid_number工作正常。但在电子邮件中。我遇到了问题。这是我的验证:



$validate = $request -> validate([
  'id' => 'required|numeric|unique:users,id,'.$user -> id,
  'email' => 'required|email|unique:users,email,'.$user -> email,
  'prn' => 'required|numeric|unique:users,prn,'.$user -> prn,
  'rfid_number' => 'required|numeric|unique:users,rfid_number,'.$user -> rfid_number
]);




输入不在数据库中的电子邮件可以正常工作。但是当我输入现有模型的电子邮件时。 "电子邮件已被删除。"示出了

2 个答案:

答案 0 :(得分:4)

如果您使用此request进行更新操作,则需要从验证测试中删除unique:users,email部分。这是因为如果电子邮件存在于users表中(就像现有用户一样),验证会产生一些错误。您可以通过附加用户ID来使其唯一。

$validate = $request -> validate([
  'id' => 'required|numeric|unique:users,id',
  'email' => 'required|unique:users,email,'.$user->id
  'prn' => 'required|numeric|unique:users,prn,'.$user -> prn,
  'rfid_number' => 'required|numeric|unique:users,rfid_number,'.$user -> rfid_number
]);

如果仅提供此更新请求,则无需检查id列的唯一性。因为在更新请求中,id将是唯一的,因此验证将失败。另一方面,如果id不存在,则无论如何更新操作都将失败。

答案 1 :(得分:1)

您需要将用户ID传递给验证程序,以跳过正在更新其电子邮件的用户的电子邮件验证。

'email' => 'unique:users,email,'.$user->id

Read More