[英]Laravel different validation doesn't work with strings containing numbers
我想驗證從某種形式獲得的值。 值類型是文本。 我希望它匹配users
表中數據庫中的特定用戶名,但也不匹配當前用戶的用戶名。
為此,我使用了以下驗證規則:
'username' => [
'required',
'string',
'exists:App\User,username',
'different:' . auth()->user()->username
]
我發現,只要auth()->user()->username
值包含一個數字,即使request()->username = auth()->user()->username
也會通過驗證。 我能做些什么來防止這種情況發生嗎?
提前致謝。
使用unique
的 -
考慮到id
是您用戶的 id。
'username' => 'required|string|unique:username,id,'.auth()->user()->username,
這將檢查用戶名是否是唯一的,除了這個 userId。
這個問題的答案是創建自己的Rule::exists
驗證,如下所示:
'username' => [
'required',
'string',
Rule::exists('users')->where(function ($query) {
$query->where('username', '<>', auth()->user()->username);
})
],
我解決了一個類似的問題,如下所示。
$request->validate([
'email' => ['required', 'email','unique:users,email,'.Auth::id()],
'phone' => ['required', 'unique:users,phone,'.Auth::id()],
]);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.