2017-02-09 11 views
1

Итак, в основном у меня есть поле в таблице из моей базы данных, которое содержит некоторые значения, разделенные запятой (что-то вроде: value1, value2, value3). Мне нужно как-то проверить, если одно или несколько из этих значений содержатся в массиве значений и извлекают модель (модели). Я бы хотел, чтобы решение, использующее Eloquent Model Query для достижения этого, если это невозможно с помощью Model Query, тогда решение Query Builder будет хорошо, или, может быть, что-то альтернативное.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

Я полагаю, это может привести к неожиданным результатам. Если у вас есть «значение12» в вашем списке, и вы фильтруете «% value1%», вы получите нежелательное совпадение. Вероятно, вам следует рассмотреть структуру базы данных и работать с реальным отношением «многие ко многим», переместив эти совместимые_объекты в свою собственную таблицу. Это позволит вам правильно их запросить, используя соединение. – Pevara

+0

Да, вы правы, и у меня на самом деле есть таблица, которая содержит значения для поля compatible_devices, но мне нужно было сделать совпадение, используя только значения, хранящиеся в поле Compatibility_desvices. Я думаю, что для этой цели я просто сделаю дополнительную таблицу «многие ко многим». Спасибо! – Eseth

 Смежные вопросы

  • Нет связанных вопросов^_^