选择查询取决于许多可能性

时间:2016-10-27 07:05:08

标签: php mysql laravel laravel-5 eloquent

我有 4在HTML中选择 usersindustrylead_sourcecountry。这些选项的默认值等于选择

我想进行查询以从表格线索中选择唯一选定值的行。

这是html代码:

<select class="form-control" name="lead_source">
       <option value="select">-SELECT-</option>
       @foreach($leadssource as $leadsource)
               <option value="{{ $leadsource -> name }}">{{ $leadsource -> name }}</option>
       @endforeach
 </select>

<select class="form-control" name="industry">
    <option value="select">-SELECT-</option>
    @foreach($industries as $industry)
        <option value="{{ $industry -> name }}">{{ $industry -> name }}</option>
    @endforeach
</select>

<select class="form-control" name="user">
    <option value="select">-SELECT-</option>
    @foreach($users as $user)
        <option value="{{ $user -> name }}">{{ $user -> name }}</option>
    @endforeach
</select>

<select class="form-control" name="country">
    <option value="select">-SELECT-</option>
    @foreach($countries as $country)
        <option value="{{ $country -> name }}">{{ $country -> name }}</option>
    @endforeach
</select>

我想只选择不等于第一个选项的值选择

  

我试过了:

使用 if语句并检查所有可能的可能性,但这并不好,因为如果我再添加一个选项,那么我必须添加更多if语句。

以下是我的第一个if语句的示例,如果选择了所有选项:

if($leadSource != 'select' && $industry != 'select' && $user != 'select' && $country != 'select'){
    $leads = Main::where('lead_source', '=', $leadSource)
                -> where('industry', '=', $industry) -> where('country', '=', $country) -> where('user', '=', $user) -> paginate(50);


    return view('filter.show') -> withLeads($leads);
}

1 个答案:

答案 0 :(得分:1)

您可以尝试:

$query = Main::query();

if(some_filter) {
  $query->where(...)
}
if(some_more_filter) {
  $query->where(...)
}

$leads = $query->paginate(50);

<强>更新

您可以根据if条件将查询链接为:

$query = Main::query();

if($leadSource != 'select') {
    $query->where('lead_source', '=', $leadSource)
}

if($industry != 'select') {
    $query->where('industry', '=', $industry)
}

if($user != 'select') {
    $query->where('user', '=', $user)
}

if($country != 'select') {
    $query->where('country', '=', $country)
}

$leads = $query->paginate(50);