2013-11-07 3 views
5

Я ищу способ поиска и фильтрацию таблицы базы данных/Красноречивую модель через строку запроса в Laravel 4.Поиск и фильтрация/нефтеперерабатывающие результатов в базе данных Laravel 4

У меня есть таблица с именем houses с столбцы названы: price, name, hasCoffeeMachine и hasStove

Я хочу, чтобы пользователь мог сделать что-то вроде: http://example.com?name=test&hasCoffeeMachine=1

который получит все строки, где название «тест», и они имеют кофеварку ,

Я хочу, чтобы пользователь мог добавлять параметры URL на основе желаемого фильтра. Каков наилучший способ учета всех возможных комбинаций строк запроса для возврата правильных результатов из таблицы?

ответ

14
$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(); 
+0

Действительно ли это для Laravel 4 ?? Это не работает для меня! – Sangar82

+0

То же самое для меня не работает? – Brent

+1

Возможно, попробуйте '' 'if (condition) ... $ houses = $ homes-> где ('column', '=', 'value')' '' – nathan

0

в качестве альтернативы можно построить и передать массив в ИНЕКЕ https://laravel.com/docs/5.2/queries#where-clauses

$houses = $houses->where([ 
    ['hasCoffeeMachine',1], 
    ['price','<','1000'], 
])->get(); 

Вы можете построить массив с любыми условными операторами.

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