请教,PHP 关于多重筛选结果分页的问题。

最近正在写一个订单管理功能的模块,基于PHP 7.1的,在做订单列表筛选显示的时候,想做分页显示,不过现在感觉没什么思路,原因在于订单列表筛选的方式维度太多, 比如需要按照各种日期匹配,时间匹配,状态查询,货运信息查询,订单明细查询…… 不一一列举,所有筛选出来的结果都需要在中间的订单列表div里做展示,请问, 现这种情况, 不同筛选条件筛选出来的结果怎样在做分页显示代码写起来会比较少冗余呢? 以及点击下一页该执行的查询应当如何判定呢?
谢谢。

阅读 3.3k
2 个回答

这里就要安利下laravel框架的l5-repository插件的强大之处了。

后端

后端只需2行代码即可完成筛选功能(包括后期可能新增的筛选条件,后端都不用改)
图片描述

前端

前端加筛选条件只要定义好模型关系,想筛选什么字段就筛选什么字段(包括不是本表的字段),类似写法如下:
图片描述order_sn是当前表从order表冗余过来的,但是又提个需求想搜索order表的其他字段dealer_id(前期没有冗余进来),只要order.dealer_id即可,其中order为这两表之间的关系。

DB

他生成的sql语句类似:select count(*) as aggregate from distributor_commision where (exists (select * from order where distributor_commision.order_sn = order.order_sn and dealer_id = '111'))

是不是很方便,底层实现原理就是解析前端name值,然后在模型里加where条件,具体可看看他源码。

新手上路,请多包涵

第一个问题不太明晰。对于第二个问题,点击下一页后,前端通过js代码得到 筛选条件以及下一页对应的页码值,生成 筛选参数以及页码参数 通过 get请求或其他请求 来访问后台,后台通过附带的 筛选参数以及页码参数 拼接出select语句 进行下一页的查询(通过limit关键字实现分页的查询)。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题