如何在laravel 5中过滤数据?

如何在laravel 5中过滤数据?,laravel,laravel-5,Laravel,Laravel 5,查看 ... <span class="opensans size13"><b>Gender</b></span> <select class="form-control" name="gender" id="gender" placeholder="Gender"> <option value="" selected="">Gender</optio

查看

...
<span class="opensans size13"><b>Gender</b></span>
                <select class="form-control" name="gender" id="gender" placeholder="Gender">
                  <option value="" selected="">Gender</option>                      
                  <option value="M">Male</option>
                  <option value="F">Female</option>                       
                </select>   
            <span class="opensans size8" style="color: red;"></span>                                                    
            <div class="clearfix pbottom15"></div>

            <span class="opensans size13"><b>Published</b></span>
                <select class="form-control" name="published" id="published" placeholder="Published">
                  <option value="" selected="">Published</option>                       
                  <option value="YES">YES</option>
                  <option value="NO">NO</option>                          
                </select>   
            <span class="opensans size8" style="color: red;"></span>    
...

<div class="col-md-5">
                <div class="right wh70percent">
                    <select class="form-control" name="status_sort" id="status_sort" placeholder="Status">
                      <option value="" selected="">Status</option>                      
                      <option value="N">N</option>
                      <option value="BL">BL</option>                          
                    </select>
                </div>
            </div>
...     
界面如下:

当我只选择“发布”和“性别”,然后按“搜索”按钮时,数据将根据

当我仅选择状态时,显示的数据将按照

但当我选择性别、发布和状态时,显示的数据不匹配

我想再问一次。除了我的代码,是否还有其他更简单的代码


谢谢

您应该在每次添加筛选器时生成查询,如:

    $customer = customer;

    if(!empty($status)) {
        $customer = $customer->where('tb_customer.customer_status', '=', $status);
    }

    if (!empty($gender)) {
        $customer = $customer->where('tb_customer.gender', '=', $gender);
    }

    if (!empty($published_check)) {
        $customer = $customer->where('tb_customer.published', '=', $published);
    }

    return $customer->paginate(10);
通过这种方式,您只需添加条件,而不需要检查每个案例,然后再次编写相同的查询


免责声明:我不是Laravel用户,您可能需要稍微编辑代码,只需说出构建查询的方法

谢谢您回答我的问题。代码变得更简单了。但它仍然不起作用。当我选择性别、发布和状态时,显示的数据不匹配。您是否检查了真正的sql查询?
    $customer = customer;

    if(!empty($status)) {
        $customer = $customer->where('tb_customer.customer_status', '=', $status);
    }

    if (!empty($gender)) {
        $customer = $customer->where('tb_customer.gender', '=', $gender);
    }

    if (!empty($published_check)) {
        $customer = $customer->where('tb_customer.published', '=', $published);
    }

    return $customer->paginate(10);