Laravel搜索逻辑

时间:2017-03-25 15:11:06

标签: laravel laravel-5 laravel-5.3 laravel-5.4

在过去的两天里,我试图构建这个相对简单的搜索系统,但我无法弄清楚这一点。 基本上,我有一些选择标签,其中包含筛选用户的选项.. 像这样:

href

这些是表格(获取申请表),这是我的控制人员。

  <div class="col-sm-4">
    <label for="price">Price:</label><br>
    <select class="browse-select" name="price">
      <option>Any</option>
      <option value="1">Less than 100$</option>
      <option value="2">More than 100$</option>
    </select>
  </div>

  <div class="col-sm-4">
    <label for="delivery">Delivery:</label><br>
    <select class="browse-select" name="delivery">
      <option>Any</option>
      <option value="1">1 month or less</option>
      <option value="7">7 days or less</option>
      <option value="3">3 days or less</option>
    </select>
  </div>

正如您所看到的,我在用户和服务之间存在关系。因为我需要访问用户的服务才能比较值并查询数据库。

到目前为止我所拥有的,但只适用于一个选择。如果我选择一个类别,那么工作正常并显示用户。但是,如果我尝试选择一个类别和价格,那么它将返回所有用户。 我该怎么做呢?我觉得我在这里错过了什么......

1 个答案:

答案 0 :(得分:0)

我认为您需要添加其他检查并拆分查询。像

这样的东西
$searchQuery = Service::with('user');

if($request->has('category'))
{
    $searchQuery->where('category', $request->input('category'));
}

if($request->has('price'))
{
    $operator = (1 === $request->input('price')) ? '>' : '<';

    $searchQuery->where('price', $operator, 100);
}

$result = $searchQuery->get();