【问题标题】:How to validate email as unique while updating data using laravel form request?如何在使用 laravel 表单请求更新数据时验证电子邮件的唯一性?
【发布时间】: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访问到表单请求中?

【问题讨论】:

    标签: mysql laravel validation laravel-formrequest


    【解决方案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
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-08
    • 2017-04-17
    • 1970-01-01
    • 2019-01-26
    • 2022-01-11
    • 2023-03-27
    • 2020-07-07
    相关资源
    最近更新 更多