laravel-admin 后台表格筛选设置默认的查询日期方法
一、框架版本说明
此篇文章适用于以下版本:
1. laravel 5.5
2. laravel-admin 1.7.5
```php
$grid->filter(function(Grid\Filter $filter){
$filter->like('title', '标题');
$filter->between('created_at', '发布日期')->date();
});
```
日期筛选条件会在前端界面上生成对应的筛选组件。
三、需要设置默认查询日期的原因
在进行大量数据的查询时,如果没有默认的查询条件限制,会严重影响数据库查询效率,甚至可能需要数秒才能获取结果。我们需要设置默认的查询条件来提高查询效率。
四、处理方法
我们可以在查询方法开始处添加代码来设置默认的查询日期:
```php
if(empty(request()->input('created_at'))) {
request()->offsetSet('created_at', Helper::lastConditionDate('month'));
}
```
这段代码的主要目的是给Request对象设置请求参数`created_at`。`Helper::lastConditionDate('month')`这个方法会返回一个包含起止时间的数据,例如:`['start' => '2019-07-09', 'end' => '2019-08-08']`。这样,我们就可以在前端页面看到默认的查询日期范围。
五、问题的曲折解决过程
一开始,作者试图在标题设置成功的地方设置默认日期,但发现无法生效。经过深入研究,作者发现laravel-admin的筛选条件是在URL的查询参数中设置的,而不是在filter方法中设置的。要想设置默认的查询条件,必须先修改Request对象的请求参数。这是老大解决的,作者记录下了这个过程,并分享了自己的弯路和经验。作者曾试图在源码中直接添加默认值的设置,但效果不佳。作者明白了laraval-admin的查询机制,成功解决了问题。
编程语言
- laravel-admin 后台表格筛选设置默认的查询日期方法
- JavaScript实现反转字符串的方法详解
- yii2中添加验证码的实现方法
- php时区转换转换函数
- 解决mac使用homebrew安装MySQL无法登陆问题
- PHP实现事件机制实例分析
- 妙用缓存调用链实现JS方法的重载
- js删除局部变量的实现方法
- php中设置index.php文件为只读的方法
- js 提交form表单和设置form表单请求路径的实现方法
- 嵌套repeater示例分享
- jquery获取select选中值的方法分析
- asp.net截屏功能实现截取web页面
- Smarty模板简单配置与使用方法示例
- jQuery实现防止提交按钮被双击的方法
- PHP函数strip_tags的一个bug浅析