我想驗證從某種形式獲得的值。值類型是文本。我希望它匹配表中數據庫中的特定用戶名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 關注
- 168 瀏覽
添加回答
舉報
0/150
提交
取消