使用带有附加过滤器的下拉选项进行搜索-Laravel 5.7

时间:2018-11-09 20:51:09

标签: php laravel

我想在从下拉列表中选择“推荐”或“来源”时添加选项,以获取在这两列之一中具有除null或'0'以外的内容的所有候选人,并使用'created_at'对它们进行排序,至今。

这是我的观点:

(?PrmYear? <> [Current Yr]) OR
(?PrmYear? = [Current Yr] and [Month] <= [Current month])

这是我的控制器,在这里我尝试实现添加值“ recommendation”或“ source”的新变量,将该值分配给新变量,然后删除$ options变量,所以我跳过了

    <div class="container">
<div class="row">
<div class="col-lg-12 col-md-12">
    <form class="search-form search-form-basic" action="/candidates/index" method="post">
    {{ csrf_field() }}
        <div class="form-row">              
            <div class="col-md-4 form-group">
                <label for="search_email">First name:</label>
                <input type="text" name="search_first_name" id="search_first_name" class="form-control" @if(isset(Session::get('inputs')['search_first_name'])) value="{{ Session::get('inputs')['search_first_name'] }}" @endif>
            </div> 
            <div class="col-md-4 form-group">
                <label for="search_last_name">Last name:</label>
                <input type="text" name="search_last_name" id="search_last_name" class="form-control" @if(isset(Session::get('inputs')['search_last_name'])) value="{{ Session::get('inputs')['search_last_name'] }}" @endif>
            </div> 
            <div class="col-md-4 form-group">
                <label for="search_round_number">Round Number:</label>
                <input type="text" name="search_round_number" id="search_round_number" class="form-control" placeholder="" @if(isset(Session::get('inputs')['search_round_number'])) value="{{ Session::get('inputs')['search_round_number'] }}" @endif>
            </div>  
            <div class="col-md-4 form-group">
                <label for="search_location">location:</label>
                <input type="text" name="search_location" id="search_location" class="form-control" 
                 @if(isset(Session::get('inputs')['search_location'])) value="{{ Session::get('inputs')['search_location'] }}" @endif>
            </div> 
            <select name="options" class="col-md-4 form-group">
             <option value="">--- Select From ---</option>
              <option  value="birth_date">Birth Date</option>
              <option  value="CV_grade_date">CV Grade Date</option>
              <option  value="source">Source</option>
              <option  value="recommendation">Recommended</option>                
              <option  value="created_at">Applied</option>
            </select>
            <div class="col-md-4 form-group">
                <label for="search_from_date">From:</label>
                <input type="date" name="search_from_date" id="search_from_date" class="form-control" 
                 @if(isset(Session::get('inputs')['search_from_date'])) value="{{ Session::get('inputs')['search_from_date'] }}" @endif>
            </div> 
            <div class="col-md-4 form-group">
                <label for="search_to_date">To:</label>
                <input type="date" name="search_to_date" id="search_to_date" class="form-control" 
                 @if(isset(Session::get('inputs')['search_to_date'])) value="{{ Session::get('inputs')['search_to_date'] }}" @endif>
            </div>  
        </div>
        <div class="form-row">
            <div class="col-md-12 col-lg-12">
                <button type="submit" class="btn btn-custom"><i class="fa fa-search" aria-hidden="true"></i>Search</button>
                <a href="/users" class="btn btn-custom"><i class="fa fa-times-circle" aria-hidden="true"></i>Clear</a>
            </div>
        </div>
    </form>
</div>

这是我的代码:

        ->when($options, function ($query) use ($options,$search_from_date,$search_to_date  ) {
           return $query->whereBetween($options, array($search_from_date, $search_to_date));

}

我得到的错误是“未定义的变量:选项”,但是我没有找到解决此问题的方法。 我确实看到了类似的问题,但没有任何帮助。

1 个答案:

答案 0 :(得分:0)

1)在您的视图中,<select>名称属性是 options ,但是在您的 controller 中,您正在检索下拉 $options = Input::get('dropdown');。应该是:

  

$ options = Input :: get('options');

2)如果要检查所选选项是recommendation还是source,则if语句应为:

  

if($ options =='recommendation'|| $ options =='source')

3)在您的 if语句中,您正在设置$ options变量,但是下面的行有when($option,..,则应将unset($options);更改为:

  

$ options = null;

否则它将再次抛出“未定义的变量:选项”。

4)另外,在控制器中,您使用->when($recOrSource,..,但是变量$recOrSourceif statement内声明,因此如果您不选择“ recommended”或“ source” ,您将获得“未定义的变量:recOrSource”。要解决此问题,您应该在{em> if语句之外声明$recOrSource

$recOrSource = null;

if ($options == 'recommendation' || $options == 'source') {

总结一下,应该在控制器中进行的更改:

...
$options = Input::get('options');
$recOrSource = null;

if($options == 'recommendation' || $options == 'source')   {
    $recOrSource = Input::get('options');
    $options = null;
}
...