如何验证电子邮件的唯一性,同时使用laravel表单请求更新数据?

pb3skfrl  于 2023-02-10  发布在  其他
关注(0)|答案(2)|浏览(117)

我正在使用表单请求来验证更新方法中的数据。我正在尝试将电子邮件验证为唯一值,希望请求的用户电子邮件如下所示

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访问到表单请求中?

jtw3ybtb

jtw3ybtb1#

我假设您正在发布一个用户对象,其中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',
    ];
}
kgqe7b3p

kgqe7b3p2#

在我的例子中,$this->id不起作用,但是$this->user起作用了。

public function rules()
{
    return [
        'first_name' => 'required|min:2|max:150',
        'last_name' => 'required|min:2|max:150',
        'email' => ['required', 'email', 'max:255', Rule::unique('users')->ignore($this->user)]
    ];
}

相关问题