簡體   English   中英

laravel eloquent - 檢查表中數組的所有值

[英]laravel eloquent - check if all values of array in table

我有一個表options ,我有一個字符串數組["value1", "value2", "value3"]

我想做的是檢查數組中的所有值是否都存在於表中。

我試過whereIn但我認為它會檢查表中是否存在任何值。

這是我目前所做的:

$v = ["value1", "value2", "value3"];

$options = Options::whereIn('value', $v)->get();

if ($options->count() != count($v)) {
//something must be missing
}

這行得通,但我想知道是否有更好的方法? 該表有數百萬條記錄,所以如果可能的話,我只想做 1 個查詢。

謝謝!

justcarty 評論中的答案在技術上是正確的,但是如果您不打算使用它們,則可以通過不拉入選項來減少負載。

if (Option::whereIn('value', [...])->count() != count([...])) {
    //perform action
}

另請注意,正如 justcarty 所提到的,如果您的數據庫中有多個值出現,這將不起作用,但您可以通過在查詢中添加 DISTINCT 子句來解決這個問題。

if (Option::distinct(['value'])->whereIn('value', [...])->count() != count([...])) {
    //perform action
}

其中專門檢查whereIn中的那個value

你可以試試這個:

$search_values = ['value1', 'value2', 'value3'];
$found = true;
foreach ($search_values as $search) {
    if (!Search::where('column', $search)->first()) {
        $found = false;
    }
}

if (!$found) {
    // Something must be missing
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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