在Laravel 4中搜索和过滤/优化数据库结果

时间:2013-11-07 07:53:46

标签: php mysql laravel laravel-4

我正在寻找一种通过Laravel 4中的查询字符串搜索和过滤数据库表/ Eloquent模型的方法。

我有一个名为houses的表,其中的列名为:pricenamehasCoffeeMachinehasStove

我希望用户能够执行以下操作:http://example.com?name=test&hasCoffeeMachine=1

这将获得名称为“test”的所有行,并且他们有咖啡机。

我希望用户能够根据他们想要的过滤器添加URL参数。考虑所有可能的查询字符串组合以从表中返回正确结果的最佳方法是什么?

2 个答案:

答案 0 :(得分: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();

答案 1 :(得分:0)

或者你可以构建并将数组传入where子句https://laravel.com/docs/5.2/queries#where-clauses

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

您可以使用任何条件语句构建数组。