【问题标题】:Laravel email update validationLaravel 邮件更新验证
【发布时间】:2018-04-20 16:22:53
【问题描述】:

我在更新电子邮件时遇到问题。 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
]);

输入不在数据库中的电子邮件可以正常工作。但是当我输入现有模型的电子邮件时。 “邮件已经被取走了。”显示

【问题讨论】:

  • 那是因为你正在验证uniqueness,所以如果邮箱存在,就会显示验证错误
  • 现有模型是什么意思?

标签: laravel validation laravel-5


【解决方案1】:

如果您使用此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 不存在,更新操作无论如何都会失败。

【讨论】:

  • 我的idprnrfid_number 怎么样?为什么它运行良好?
  • 因为,您不必要地将 $user -> id 与您的 id 连接起来。因此,通过这种串联,它变得独一无二。我在上面更新了我的答案。请检查。
【解决方案2】:

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

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

Read More

【讨论】:

  • 有效!但是为什么我的idprnrfid_number 工作,即使我没有使用'prn' => 'required|numeric|unique:users,prn,'.$user->id
  • 您已经将idprnrfid_number 传递给验证器。因此它将检查验证并相应地返回真或假。但是对于电子邮件地址,您需要传递用户 ID 来获取用户实例并跳过验证。抱歉,我无法让您正确理解。
猜你喜欢
  • 2020-11-03
  • 2022-01-11
  • 1970-01-01
  • 2020-11-08
  • 1970-01-01
  • 1970-01-01
  • 2020-03-18
  • 2018-07-04
  • 2021-04-13
相关资源
最近更新 更多