當建立一個查詢來找到一個模型多個值,雄辯會是這個樣子:Laravel where查詢中找不到列表值?
return Contact::whereIn('user_name', explode(',', $userNames)
但是,讓我們說,對於userNames
值['foo', 'bar'];
但我只有foo
作爲一個有效的用戶名,有沒有辦法將bar
(全都找不到)作爲同一查詢的一部分,而無需將結果->get()
與請求進行比較?
當建立一個查詢來找到一個模型多個值,雄辯會是這個樣子:Laravel where查詢中找不到列表值?
return Contact::whereIn('user_name', explode(',', $userNames)
但是,讓我們說,對於userNames
值['foo', 'bar'];
但我只有foo
作爲一個有效的用戶名,有沒有辦法將bar
(全都找不到)作爲同一查詢的一部分,而無需將結果->get()
與請求進行比較?
您可以使用數組差異來刪除選擇區域中的無效值,並且您丟失了->get()
以獲取結果;
return Contact::whereIn('user_name', array_diff(explode(',', $userNames, ['bar']))->get()
我知道....這個問題的答案如何? – jycr753
@ jycr753我錯過了解你的問題,我編輯過。 –
這是不可能得到的查詢返回不從給定的條件下存在的用戶名的列表。但你可以做到這一點。
$allUserNames = explode(',', $userNames);
$validUserNames = Contact::whereIn('user_name', $allUserNames)
->pluck('user_name')
->toArray();
$invalidUserNames = array_values(array_diff($allUserNames, $validUserNames));
所以你想過濾掉請求數據中的用戶名列表?請更準確地知道您需要什麼。 – Sandeesh
因此,即使數據庫中不存在此類聯繫人,也需要使用該用戶名的聯繫人對象列表? – Jerodev
我正在和這個英俊的人一起工作在同一個項目上。我們正在尋找一種方法來獲得2個列表 - 一個與匹配和一個用戶名沒有找到。 – Sydgren