使Laravel筛选查询更优雅的插件l5-repository

Laravel是一个优雅的框架,但并不代表你写的业务代码也同样优雅。
你的代码中是否还存在如下类似代码:

//是否绑定
if (isset($param['bind']) and $param['bind'] != '-1') { $t = $param['bind'] == 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']); }); }

当业务需求要加多个查询条件的时候,往往需要改前端页面和后端页面,前端加input框,后端加if条件。

本文分享下l5-repository(原作者) / l5-repository(本文作者改后)插件,ps:虽然目前原作者已不维护了,不过貌似招了些自愿者去维护,不影响基本使用。这里提到了两个l5插件,主要介绍下后者,改动的部分可以很好支持此插件。

repository模式

此插件实现了repository层,业务逻辑相关的代码放在repository中实现,所有的repository继承公共repository,公共repository继承\Prettus\Repository\Eloquent\BaseRepository,repository模式不了解的点这里。

控制器

控制器方面只需简单的2行即可,插件会解析请求参数,但是解析的是特定形式的查询参数,如: /users?search=user_name:133;created_at:2018-01-01,2018-01-17&searchFields=user_name:like;created_at:between

public function index(Request $request) { $this->userRepository->pushCriteria(new RequestCriteria($request)); $users= $this->userRepository->paginate(); } 

视图

视图方面原作者只是举了几个例子,并没提供相关js去拼成后端识别的格式,所以想依靠控制器两行代码简化查询还得做些工作,本文作者不忍心这插件由于这点瑕疵而弃用,于是自己fork了个然后写了一坨jquery去支持它。平舆县人民政府于是,视图代码如下即可:

{{-- 搜索本表的user_name字段 data-search-type="like":模糊搜索 --}}
<input data-search-type="like" name="user_name" type="text"> {{-- 搜索关联表的联系电话字段 --}} <input data-search-type="like" name="userAddress.tel" type="text"> {{-- 创建区间查询 created_at between '2018-01-01' and '2018-01-17' --}} <input data-search-type=">=" data-is-between="1" name="created_at" type="text"> <input data-search-type="<=" data-is-between="1" name="created_at" type="text">

写的那段jquery便可自动将表单参数拼成l5-repositoy识别的格式,后续加新的筛选条件只要前端加input即可。

转载于:https://www.cnblogs.com/xinshijue6080/p/8361919.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值