laravel-admin 后台表格筛选设置默认的查询日期方法
一、框架版本说明
laravel 5.5
laravel-admin 1.7.5
二、表格日期筛选使用
后端调用代码
$grid->filter(function(Grid\Filter $filter){ $filter->like('title', '标题'); $filter->between('created_at', '发布日期')->date(); });
日期筛选条件对应的前端界面如下图:
三、需要设置默认查询日期的原因
对于大表查询如果没有默认的条件限制,查询数据库会非常的慢,count(*) 总数都要好几秒
为了解决上面的问题,所以需要加默认的条件限制
这个问题是老大解决的,下面先说明处理的方法,再记录下自己走的弯路
四、处理方法
在方法开始出加上代码:
if(empty(request()->created_at)){ request()->offsetSet('created_at',Helper::lastConditionDate('month')); }
为什么要这样写了,就是给Request对象设置请求参数created_at,就这么简单。 下面是一些简要的说明
时间查询条件字段created_at
Helper::lastConditionDate('month') 这个行代码得到是一个时间起止的数据:
Array ( [start] => 2019-07-09 [end] => 2019-08-08 )
设置这个数据,是因为laraval-admin的日期查询条件就是这样提交到前端的,见下图:
以上就是问题的处理方法。
下面记录下,自己解决这个问题是怎么误入歧途的
开始时这样写的:
标题可以设置成功,默认的日期设置不了,为什么了?
官方文档、网上搜索了一堆,还是没有找到解决方法。我开始怀疑是不是源码的问题了,于是看源码这块是不是没有设置了,
看源码初始化的时候果然是没有设置。于是自己加了几行代码,见上图红框处。
刷新页面,果然可以看到设置的默认值了,别高兴太早,马上测试就发现问题。
重新选择日期查询,还是显示的是默认日期条件。。。。。。。
这是老大过来,看了下,很快就解决了,上面已经记录了。
自己出现的问题如下:
看标题可以设置默认值,就想当然的认为日期也是在那里设置的。
其实标题设置在第一次打开列表页面,数据库查询并没有标题的查询条件,只是显示到了页面上。
总结:
laraval-admin设置默认查询条件,在$grid->filter() 里面设置是没有用的(打开列表页面不会用到默认的查询条件)。
设置默认的查询条件需要先修改Request对象的请求参数
可以断定,laraval-admin 表格类别筛选,后端查询是参数是filter里面设置,参数值会取Request对象中对应的参数值。前端查询条件数据显示是根据URL上面的参数设置的。
以上这篇laravel-admin 后台表格筛选设置默认的查询日期方法就是小编分享给大家的全部内容了,希望能给大家一个参考
您可能感兴趣的文章:
- 如何把资源管理器默认排列方式,设置为按修改日期排列图标的方法?
- NetTiers学习笔记09---RADGrid + EntityDataSource设置默认排序, 及表格自动排序,分页的方法
- JavaScript实现设置默认日期范围为最近40天的方法分析
- 基于laravel-admin 后台 列表标签背景的使用方法
- 修改织梦dedecms后台默认admin账号的方法
- 关于yii2和laravel默认访问控制器和方法名的设置
- 修改织梦dedecms后台默认admin账号的方法
- 关于如何给<input type="date">设置默认当前日期的方法 和 给table固定宽度
- ubuntu设置开机默认进入字符界面方法
- easyui设置datebox默认当前日期,且只能选择当前日期之前的日期
- linux下面mongodb安装及设置后台运行的方法
- js+ajax处理java后台返回的json对象循环创建到表格的方法
- 使用ADF-BC 实现查询功能之九:重写getCriteriaItemClause方法设置Criteria中的变量
- Eclipse中设置作者、日期、方法注释等信息
- 设置JSP页面默认编码方式以及设置在Java文件中作者、日期等说明
- Win7系统设置自动切换默认打印机的方法
- Access数据库按日期区间查询方法
- zencart设置默认货币三种方法
- MyEclipse设置JSP页面默认编码方式以及设置在Java文件中作者、日期等说明
- oracle中SQL根据生日日期查询年龄的方法