簡體   English   中英

Laravel 不同的驗證不適用於包含數字的字符串

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM