YII2框架中 where limit offset 函数对分页的使用
YII2框架中 where limit offset 函數對分頁的使用
以前公司用的是TP框架,直接往limit函數里面傳兩個動態的參數就可以實現分頁的效果了,剛換了公司這個公司用的是YII2 框架,然后要做一個分頁的功能,感覺他們以前寫的很復雜,所以自己研究了一下
1 yii2框架里面limit函數只有一個形參
2 offset也是只可以傳一個參數
3 這倆是配合起來用的
廢話不多說 先上代碼
我們可以看到 where 條件下面 先用offset 在用limit
以前的limit(從哪兒開始取值,取幾條)
現在在yii2里面他的第一個參數 就變成了offset函數里面的內容
也就是說 limit(9,10)=== offset(9)limit(10)結果是一樣的
接下來說一下分頁,舉個例子
假設:
一共有11條數據
我們一頁取10條
那么也就是會有兩頁
第一頁 從1--------10
第二頁 取出剩下的最后一條 11
我們先說在limit里面的用法
想取出第一頁的數據,傳個頁碼,取10條數據 limit(1,10)
但是上面這么做的話是從第2條開始取得數據,我們要想從第一條取得話應該是 傳個0 limit(0,10),這樣就把第一頁的10條數據取出來了
但是第二頁的數據我們傳個 2 嗎?
顯然是不對的,那樣的話 取出的就是從第三條開始了
為了方便理解,假設一下變量名
A = 頁碼
B = 一頁幾條
我們要取第二頁的數據
那么公式就是 C =(A-1)* B
那么我們要取第二頁的數據 應該這樣寫 limit(C ,10)
可以算一下 第二頁傳過的參數是 1的話
(1 - 1)* 10 == 0 也就是 limit(0,10)
第二頁傳的參數是2的話
(2 - 1)* 10 == 10 也就是 limit(10,10) 這樣的話就把第11條數據取出來了,并且還能在再取9條數據
第三頁的話也是如此就不在過多贅述了。。。。
那么我們剛才提到offset()這個函數,他其實就是limit()函數里面的第一個形參,也就是說,limit(offset,10)
所以我們YII2框架里面要做的就是將剛才的公式算出值帶入offset函數里面
因為YII框架的寫法
只支持 limit()里面傳一個參數,offset()也只能傳一個參數
這兩個放在一起寫的話,正好可以彌補一下limit()里面寫兩個參數的不足
關于 count()函數,大家可以看到我是在where條件下面寫的,這樣做的目的就是靈活的根據搜索條件查出對應的數據總量
也可以使用 $query->andwhere這樣的寫法,個人不習慣罷了
到現在,我們只需要前端傳給我們一個頁碼,我們就可以完成分頁的功能
好了,說完了,說的挺多的,我看了一下網上沒有這么詳細的說過這個東西,大概是大佬們覺得太簡單了,沒必要細說
學習的路還有很長,我剛工作也不久,大佬看見了別噴,自動略過就好,,哈哈哈,如果這篇文章對有需要的同學產生了幫助的效果,那么我寫這篇博客的目的就達到了。
總結
以上是生活随笔為你收集整理的YII2框架中 where limit offset 函数对分页的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 财务报表(支票单)金额制作
- 下一篇: Java REST API Server