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