如何在使用 laravel 表单请求更新数据时验证电子邮件的唯一性?
How to validate email as unique while updating data using laravel form request?
我正在使用表单请求来验证更新方法中的数据。我正在尝试将电子邮件验证为唯一值,期望请求的用户电子邮件是这样的
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 访问到表单请求中?
我假设您要发布一个用户对象,其中 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',
];
}
我正在使用表单请求来验证更新方法中的数据。我正在尝试将电子邮件验证为唯一值,期望请求的用户电子邮件是这样的
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 访问到表单请求中?
我假设您要发布一个用户对象,其中 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',
];
}