Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用laravel查询生成器进行过滤还有其他方法吗?_Php_Mysql_Laravel_Laravel Query Builder - Fatal编程技术网

Php 使用laravel查询生成器进行过滤还有其他方法吗?

Php 使用laravel查询生成器进行过滤还有其他方法吗?,php,mysql,laravel,laravel-query-builder,Php,Mysql,Laravel,Laravel Query Builder,我正在使用filter来显示数据,由于我对每个可能的条件都使用if-else子句,代码变得越来越长。有没有更好的方法来编写这些代码 这是我在过滤器上使用的示例代码之一 HTML代码: <div class="well well-sm col-xs-12"> <div class="row"> <div class="col-sm-2 col-xs-12">

我正在使用filter来显示数据,由于我对每个可能的条件都使用if-else子句,代码变得越来越长。有没有更好的方法来编写这些代码

这是我在过滤器上使用的示例代码之一

HTML代码:

        <div class="well well-sm  col-xs-12">
            <div class="row">
                <div class="col-sm-2 col-xs-12">
                    <div class="form-group form-group-sm">
                        <label>Date &nbsp;</label>
                        <select class="form-control month" name="month">
                            <option value="1"> January </option>
                            <option value="2"> February </option>
                            <option value="3"> March </option>
                            <option value="4"> April </option>
                            <option value="5"> May </option>
                            <option value="6"> June </option>
                            <option value="7"> July </option>
                            <option value="8"> August </option>
                            <option value="9"> September </option>
                            <option value="10"> October </option>
                            <option value="11"> November </option>
                            <option value="12"> December </option>
                        </select>
                        <select class="form-control year" name="year">
                            <option value="2019"> 2019 </option>
                            <option value="2018"> 2018 </option>
                            <option value="2017"> 2017 </option>
                            <option value="2016"> 2016 </option>
                            <option value="2015"> 2015 </option>
                            <option value="2014"> 2014 </option>
                            <option value="2013"> 2013 </option>
                            <option value="2012"> 2012 </option>
                            <option value="2011"> 2011 </option>
                            <option value="2010"> 2010 </option>
                            <option value="2009"> 2009 </option>
                        </select>
                    </div>

                </div>

                <div class="col-sm-2 col-xs-12">
                    <div class="form-group form-group-sm">
                        <label>Customer</label>
                        <select class="form-control customer" name="customer">
                            <option value="all">All</option>
                            @foreach($customer_options as $key => $data)
                            <option value="{{ $data->ref_code}}">{{$data -> ref_code}}-{{ $data->name_t }}</option>
                            @endforeach
                        </select>
                    </div>
                </div>


                <div class="col-sm-3 col-xs-12">
                    <div class="form-group form-group-sm">
                        <label>Search Text&nbsp;&nbsp;&nbsp;</label>
                        <input type="text" name="search" class="form-control" id="search">
                        <input type="submit" name="" value="Show Data" id="show" class="btn btn-success btn-sm">
                    </div>
                </div>

            </div>
        </div>
除了使用扩展的if-else子句之外,还有更好的方法使用更干净的代码进行过滤吗? 对于上面的示例,只有一个选项需要选择,即“客户”,要么获取所有客户,要么选择一个特定的客户。 对于我的其他表单,需要指定许多选项。编写这些代码而不重复条件以外的相同内容的替代方法是什么?

是的,您可以使用它

->when($customer === 'all', function ($query) {
    // Special query parts for all customers
}, function ($query) {
    // Optional query parts for when not all customers
})

这种方法基本上与直接sql相同。请考虑实现ORM层。
->when($customer === 'all', function ($query) {
    // Special query parts for all customers
}, function ($query) {
    // Optional query parts for when not all customers
})