zoukankan      html  css  js  c++  java
  • laravel-admin 后台表格筛选设置默认的查询日期

    一、框架版本说明

    laravel 5.5

    laravel-admin 1.7.5

    二、表格日期筛选使用

    • 后端调用代码
     $grid->filter(function(GridFilter $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的日期查询条件就是这样提交到前端的,见下图:

    以上就是问题的处理方法。



    下面记录下,自己解决这个问题是怎么误入歧途的

    开始时这样写的:

    标题可以设置成功,默认的日期设置不了,为什么了?

    官方文档、网上搜索了一堆,还是没有找到解决方法。我开始怀疑是不是源码的问题了,于是看源码这块是不是没有设置了,

    看源码初始化的时候果然是没有设置。于是自己加了几行代码,见上图红框处。

    刷新页面,果然可以看到设置的默认值了,别高兴太早,马上测试就发现问题。

    重新选择日期查询,还是显示的是默认日期条件。。。。。。。

    这是老大过来,看了下,很快就解决了,上面已经记录了。


    自己出现的问题如下:

    看标题可以设置默认值,就想当然的认为日期也是在那里设置的。

    其实标题设置在第一次打开列表页面,数据库查询并没有标题的查询条件,只是显示到了页面上。


    总结:

    1. laraval-admin设置默认查询条件,在$grid->filter() 里面设置是没有用的(打开列表页面不会用到默认的查询条件)。

    2. 设置默认的查询条件需要先修改Request对象的请求参数

    3. 可以断定,laraval-admin 表格类别筛选,后端查询是参数是filter里面设置,参数值会取Request对象中对应的参数值。前端查询条件数据显示是根据URL上面的参数设置的。

  • 相关阅读:
    2星|《所有的工作都可以用一张纸画完》
    1星|《我怎么没想到》:古龙武侠小说风格,有故事没细节,没有实际的商业价值
    3星|《三联生活周刊》2017年45期:盒马鲜生四不像
    3星|《如何激励你的员工》:优秀的企业管理者擅长问问题
    Android 用MediaCodec实现视频硬解码(转)
    ISO/IEC 14496 文档内容简介, MPEG标准
    The h.264 Sequence Parameter Set
    World’s Smallest h.264 Encoder
    linux socket中的SO_REUSEADDR
    Bootstrap
  • 原文地址:https://www.cnblogs.com/zqsb/p/11314293.html
Copyright © 2011-2022 走看看