为了账号安全,请及时绑定邮箱和手机立即绑定

Laravel 不同的验证不适用于包含数字的字符串

Laravel 不同的验证不适用于包含数字的字符串

PHP
当年话下 2023-06-18 16:26:16
我想验证从某种形式获得的值。值类型是文本。我希望它匹配表中数据库中的特定用户名users,但也不匹配当前用户的用户名。为此,我使用了以下验证规则:'username' => [    'required',    'string',    'exists:App\User,username',    'different:' . auth()->user()->username]我发现只要auth()->user()->username值包含数字,它就会通过验证,即使request()->username = auth()->user()->username. 我能做些什么来防止这种情况发生吗?
查看完整描述

3 回答

?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

使用unique像 -

考虑的id是您的用户 ID。

'username' => 'required|string|unique:username,id,'.auth()->user()->username,

这将检查除此 userId 之外的用户名是否唯一。


查看完整回答
反对 回复 2023-06-18
?
炎炎设计

TA贡献1808条经验 获得超4个赞

这个问题的答案是创建自己的Rule::exists验证,如下所示:


'username' => [

    'required',

    'string',

    Rule::exists('users')->where(function ($query) {

        $query->where('username', '<>', auth()->user()->username);

    })

],


查看完整回答
反对 回复 2023-06-18
?
侃侃无极

TA贡献2051条经验 获得超10个赞

我解决了类似的问题如下。


$request->validate([

            'email' => ['required', 'email','unique:users,email,'.Auth::id()],

            'phone' => ['required', 'unique:users,phone,'.Auth::id()],

        ]);


查看完整回答
反对 回复 2023-06-18
  • 3 回答
  • 0 关注
  • 132 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信