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

我想验证从某种形式获得的值。值类型是文本。我希望它匹配表中数据库中的特定用户名users,但也不匹配当前用户的用户名。


为此,我使用了以下验证规则:


'username' => [

    'required',

    'string',

    'exists:App\User,username',

    'different:' . auth()->user()->username

]

我发现只要auth()->user()->username值包含数字,它就会通过验证,即使request()->username = auth()->user()->username. 我能做些什么来防止这种情况发生吗?


当年话下
浏览 133回答 3
3回答

沧海一幻觉

使用unique像 -考虑的id是您的用户 ID。'username' => 'required|string|unique:username,id,'.auth()->user()->username,这将检查除此 userId 之外的用户名是否唯一。

炎炎设计

这个问题的答案是创建自己的Rule::exists验证,如下所示:'username' => [&nbsp; &nbsp; 'required',&nbsp; &nbsp; 'string',&nbsp; &nbsp; Rule::exists('users')->where(function ($query) {&nbsp; &nbsp; &nbsp; &nbsp; $query->where('username', '<>', auth()->user()->username);&nbsp; &nbsp; })],

侃侃无极

我解决了类似的问题如下。$request->validate([&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'email' => ['required', 'email','unique:users,email,'.Auth::id()],&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'phone' => ['required', 'unique:users,phone,'.Auth::id()],&nbsp; &nbsp; &nbsp; &nbsp; ]);
打开App,查看更多内容
随时随地看视频慕课网APP