根据不同参数创建过滤搜索

时间:2018-03-11 13:19:34

标签: laravel eloquent

我需要根据用户选择的不同参数创建过滤搜索。所以,例如,我的应用程序是一个属性应用程序。我希望他们能够从下拉列表中定义县,镇,最大,最小卧室等,然后按搜索,这将返回符合条件的所有属性。

我该怎么做呢?我无法在线找到任何教程,但也许我没有正确地说它。

以下是我从UI视角观察到的图像。

https://imgur.com/a/YEEqt

2 个答案:

答案 0 :(得分:1)

考虑到您的经验,以下是一个易于使用的解决方案。

  • 在现有控制器或方法中创建新控制器或方法。
  • 首先在刀片中创建一个简单的表单(方法GET),它将从简单的隐藏字段中返回预定义的值
  • 创建一个新的GET路由,其中​​必须提交表单并将其链接到您创建的控制器方法
  • 在您的控制器方法中,从您的请求中获取提交的表单数据,进行正确的查询并返回包含结果的表单的刀片模板文件
  • 修改刀片模板以显示结果
  • 最后用选择下拉列表替换隐藏字段并修改控制器以填充它们

您可以使表单提交过程和选择下拉字段异步,但根据您使用Laravel的经验,它应该很难。按照上述步骤完成您的工作。

  

请务必查看官方documentation。你会从那里获得很多帮助。

答案 1 :(得分:0)

您可以尝试使用控件中的过滤器选项

public function filter(Request $request, Property $property)
{
  $property = $property->newQuery(); 

  // Search for a property based on country
  if ($request->has('country')) {
    return $property->where('country', $request->input('country'));
  }

  // Search for a property based on their area.
  if ($request->has('areas')) {
    return $property->where('areas', $request->input('areas'));
  }

 // Search for a property based on max_price
  if ($request->has('max_price')) {
    return $property->where('price','<=', $request->input('max_price'));
  }

  // Continue for all of the filters.


  return $property->get();
}

有关详细信息,请参阅link