如何在使用 laravel 表单请求更新数据时验证电子邮件的唯一性?
Posted
技术标签:
【中文标题】如何在使用 laravel 表单请求更新数据时验证电子邮件的唯一性?【英文标题】:How to validate email as unique while updating data using laravel form request? 【发布时间】:2021-11-12 22:44:08 【问题描述】:我正在使用表单请求将数据验证为更新方法。我正在尝试将电子邮件验证为唯一值,期望像这样请求用户电子邮件
public function rules()
$user = $this->user();
return [
'name' => 'required|max:255|string',
'email' => 'required|email|max:255|unique:users,email,'.$user->id,
'restaurant' => 'required',
];
但是不行,如何将请求的用户id访问到表单请求中?
【问题讨论】:
【参考方案1】:我假设您发布了一个用户对象,其中id
包含在您的$request
数据中。
如果您要存储新记录并且电子邮件需要可用,您可以使用:
use Illuminate\Validation\Rule;
...
public function rules()
return [
'name' => 'required|max:255|string',
'email' => ['required', 'email', 'max:255', Rule::unique('users')],
'restaurant' => 'required',
];
如果你想忽略你的用户->id,因为你正在更新你的记录,显然电子邮件是由用户接收的:
use Illuminate\Validation\Rule;
...
public function rules()
return [
'name' => 'required|max:255|string',
'email' => ['required', 'email', 'max:255', Rule::unique('users')->ignore($this->id)],
'restaurant' => 'required',
];
【讨论】:
非常感谢@Luciano以上是关于如何在使用 laravel 表单请求更新数据时验证电子邮件的唯一性?的主要内容,如果未能解决你的问题,请参考以下文章