我想验证从某种形式获得的值。值类型是文本。我希望它匹配表中数据库中的特定用户名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 之外的用户名是否唯一。
炎炎设计
TA贡献1808条经验 获得超4个赞
这个问题的答案是创建自己的Rule::exists验证,如下所示:
'username' => [
'required',
'string',
Rule::exists('users')->where(function ($query) {
$query->where('username', '<>', auth()->user()->username);
})
],
侃侃无极
TA贡献2051条经验 获得超10个赞
我解决了类似的问题如下。
$request->validate([
'email' => ['required', 'email','unique:users,email,'.Auth::id()],
'phone' => ['required', 'unique:users,phone,'.Auth::id()],
]);
- 3 回答
- 0 关注
- 132 浏览
添加回答
举报
0/150
提交
取消