Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在Laravel 4中搜索和筛选/优化数据库结果_Php_Mysql_Laravel_Laravel 4 - Fatal编程技术网

Php 在Laravel 4中搜索和筛选/优化数据库结果

Php 在Laravel 4中搜索和筛选/优化数据库结果,php,mysql,laravel,laravel-4,Php,Mysql,Laravel,Laravel 4,我正在寻找一种通过Laravel4中的查询字符串搜索和过滤数据库表/雄辩模型的方法 我有一个名为houses的表,表中的列名为:price、name、hasCoffeeMachine和hastove 我希望用户能够执行以下操作: 这将得到所有的行,其中的名称是“测试”,他们有一个咖啡机 我希望用户能够根据他们想要的过滤器添加URL参数。考虑所有可能的查询字符串组合以从表返回正确结果的最佳方法是什么?或者,您可以构建一个数组并将其传递到where子句中 $houses = new House;

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

我有一个名为houses的表,表中的列名为:
price
name
hasCoffeeMachine
hastove

我希望用户能够执行以下操作:

这将得到所有的行,其中的名称是“测试”,他们有一个咖啡机


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

或者,您可以构建一个数组并将其传递到where子句中

$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();
$houses=$houses->where([
['hasCoffeeMachine',1],

['price','对Laravel 4有效吗?它对我不起作用!也许可以试试
if(condition).$houses=$houses->where('column','=','value')
这个解决方案在Laravel 4.2中仍然有效如果hasCoffeeMachine=0,它将不起作用,最好使用
Input::has('name'))
正如@dynamic所说,当从Eloquent创建对象时,您似乎无法做到这一点,您必须做到这一点,
$houses=DB::table('house');
然后循环似乎可以工作
$houses = $houses->where([
    ['hasCoffeeMachine',1],
    ['price','<','1000'],
])->get();