请教,PHP 关于多重筛选结果分页的问题。
最近正在写一个订单管理功能的模块,基于PHP 7.1的,在做订单列表筛选显示的时候,想做分页显示,不过现在感觉没什么思路,原因在于订单列表筛选的方式维度太多, 比如需要按照各种日期匹配,时间匹配,状态查询,货运信息查询,订单明细查询…… 不一一列举,所有筛选出来的结果都需要在中间的订单列表div里做展示,请问, 现这种情况, 不同筛选条件筛选出来的结果怎样在做分页显示代码写起来会比较少冗余呢? 以及点击下一页该执行的查询应当如何判定呢?
谢谢。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这里就要安利下laravel框架的l5-repository插件的强大之处了。
后端只需2行代码即可完成筛选功能(包括后期可能新增的筛选条件,后端都不用改)
前端加筛选条件只要定义好模型关系,想筛选什么字段就筛选什么字段(包括不是本表的字段),类似写法如下:
order_sn是当前表从order表冗余过来的,但是又提个需求想搜索order表的其他字段dealer_id(前期没有冗余进来),只要
order.dealer_id
即可,其中order为这两表之间的关系。他生成的sql语句类似:
select count(*) as aggregate from
distributor_commisionwhere (exists (select * from
orderwhere
distributor_commision.
order_sn=
order.
order_snand
dealer_id= '111'))
是不是很方便,底层实现原理就是解析前端name值,然后在模型里加where条件,具体可看看他源码。
第一个问题不太明晰。对于第二个问题,点击下一页后,前端通过js代码得到 筛选条件以及下一页对应的页码值,生成 筛选参数以及页码参数 通过 get请求或其他请求 来访问后台,后台通过附带的 筛选参数以及页码参数 拼接出select语句 进行下一页的查询(通过limit关键字实现分页的查询)。