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的日期查詢條件就是這樣提交到前端的,見下圖:

以上就是問題的處理方法。



下面記錄下,自己解決這個問題是怎么誤入歧途的

開始時這樣寫的:

標題可以設置成功,默認的日期設置不了,為什么了?

官方文檔、網上搜索了一堆,還是沒有找到解決方法。我開始懷疑是不是源碼的問題了,於是看源碼這塊是不是沒有設置了,

看源碼初始化的時候果然是沒有設置。於是自己加了幾行代碼,見上圖紅框處。

刷新頁面,果然可以看到設置的默認值了,別高興太早,馬上測試就發現問題。

重新選擇日期查詢,還是顯示的是默認日期條件。。。。。。。

這是老大過來,看了下,很快就解決了,上面已經記錄了。


自己出現的問題如下:

看標題可以設置默認值,就想當然的認為日期也是在那里設置的。

其實標題設置在第一次打開列表頁面,數據庫查詢並沒有標題的查詢條件,只是顯示到了頁面上。


總結:

  1. laraval-admin設置默認查詢條件,在$grid->filter() 里面設置是沒有用的(打開列表頁面不會用到默認的查詢條件)。

  2. 設置默認的查詢條件需要先修改Request對象的請求參數

  3. 可以斷定,laraval-admin 表格類別篩選,后端查詢是參數是filter里面設置,參數值會取Request對象中對應的參數值。前端查詢條件數據顯示是根據URL上面的參數設置的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM