Laravel是一个优雅的框架,但不代表你写的业务代码也同样优雅。你的代码中是否还有下面类似的代码://是否绑定if(isset($param['bind'])and$param['bind']!='-1'){$t=$param['绑定']==1?'!=':'=';$rs=$rs->where('user_id',$t,0);}//激活if(isset($param['active_time'])and$param['active_time']!='-1'){$t=$param['active_time']==1?'>=':'<';$rs=$rs->where('active_time',$t,'1999-01-01');}if(isset($param['dealer'])&&!empty($param['dealer'])){$rs=$rs->whereHas('dealer',function($query)use($param){$query->where('name','like','%'.$param['dealer'].'%')->orWhere('dealer_id','=',$param['dealer']);});}当业务需要添加多个查询条件时,往往需要更改前端页面和后端页面,在前端添加一个输入框,在后端添加一个if条件。本文分享l5-repository(原作者)/l5-repository(本文作者修改)插件,ps:虽然原作者不再维护,但好像已经招募了一些志愿者来维护,不影响基本使用。这里提到两个l5插件,主要介绍后者。修改后的部分可以很好的支持这个插件。Repository模式该插件实现了repository层,与业务逻辑相关的代码都在repository中实现。所有仓库继承公共仓库,公共仓库继承\Prettus\Repository\Eloquent\BaseRepository。如果您不了解存储库模式,请单击此处。控制器只需要2条简单的线。插件会解析请求参数,但是它解析的是特定形式的查询参数,比如:/users?search=user_name:133;created_at:2018-01-01,2018-01-17&searchFields=user_name:like;created_at:之间。publicfunctionindex(Request$request){$this->userRepository->pushCriteria(newRequestCriteria($request));$users=$this->userRepository->paginate();}原作者只是提了几个观点比如没有提供相关js来组成后端识别格式所以如果要靠两行控制器中的代码为了简化查询,您必须做一些工作。这篇文章的作者不忍心因为这个缺陷而放弃这个插件,所以我自己fork了一个,写了一堆jquery来支持。因此,查看代码如下:{{--搜索该表的user_name字段data-search-type="like":模糊搜索--}}
