Я ищу способ поиска и фильтрации таблицы базы данных / модели Eloquent через строку запроса в Laravel 4.
У меня есть таблица с именами houses
с столбцами с именем: price
, name
, hasCoffeeMachine
и hasStove
Я хочу, чтобы пользователь мог сделать что-то вроде: http://example.com?name=test&hasCoffeeMachine=1
Который получит все строки, где имя «тест», и у них есть кофеварка.
Я хочу, чтобы пользователь мог добавлять параметры URL на основе желаемого фильтра. Каков наилучший способ учета всех возможных комбинаций строк запроса, чтобы возвращать правильные результаты из таблицы?
$houses = new House; if(Input::get('name')) $houses->where('name', '=', Input::get('name')); if(Input::get('hasCoffeeMachine')) $houses->where('hasCoffeeMachine', '=', Input::get('hasCoffeeMachine')); // Keep adding more for every filter you have // Don't do this till you are done adding filters. $houses = $houses->get();
альтернативно, вы могли бы построить и передать массив в предложение where https://laravel.com/docs/5.2/queries#where-clauses
$houses = $houses->where([ ['hasCoffeeMachine',1], ['price','<','1000'], ])->get();
Вы можете построить свой массив с любыми условными операторами.