5

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

我有一个名为的表,houses其列名为:price、、和namehasCoffeeMachinehasStove

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

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

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

4

2 回答 2

15
$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();
于 2013-11-07T13:46:44.030 回答
0

或者,您可以构建一个数组并将其传递到 where 子句https://laravel.com/docs/5.2/queries#where-clauses

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

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

于 2016-06-29T05:01:35.503 回答