2017-02-09 82 views
1

所以,基本上我在我的數據庫的表中有一個字段,其中包含一些用逗號分隔的值(如:value1, value2, value3)。我需要以某種方式檢查一個或多個這些值是否包含在值數組中並檢索模型。我希望有一個解決方案使用Eloquent Model Query來實現這一點,如果模型查詢無法實現這一點,那麼查詢生成器解決方案也可以,或者可以選擇其他方法。Laravel 5:如何驗證數組中是否包含用逗號分隔的數據庫表字段中的值?

+3

也許你應該嘗試一些並在這裏發佈你的代碼。或聘請開發人員... – Pevara

回答

0

試圖用where語句中的函數,我的循環值的,只是使用like運營商檢查字段值的值從陣列相匹配,並且在最後,我得到了這樣的查詢模型數組:

$devices = explode(",", Input::get("devices")); 
$products = Product::where(function ($q) use ($devices) { 
    foreach ($devices as $device) { 
     $q->orWhere("compatible_devices", "like", "%" . $device . "%"); 
    } 
})->get(); 

迄今爲止工作得很好。

+0

我想這可能會導致意想不到的結果。如果您的列表中有'value12',而您按'%value1%'過濾,則會收到不需要的匹配。您應該查看您的數據庫結構,並通過將這些compatible_devices移動到它們自己的表中來處理真正的多對多關係。這將允許您使用連接正確查詢它們。 – Pevara

+0

是的,你是對的,我實際上有一個表,其中包含compatible_devices字段的值,但我只需要使用'Product'的compatible_devices字段中存儲的值進行匹配。我想我只是爲了這個目的製作一個多對多的桌子。謝謝! – Eseth

相關問題