<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                [TOC] ## page方法 >[info] 其實limit 方法完全可以實現分頁查詢 ,但是page提供了一種更加人性化的體驗 ### 1、功能:為分頁查詢提供更加直觀的實現方法 ### 2、源碼:/thinkphp/library/think/db/Query.php ~~~ /** * 指定分頁 * @access public * @param mixed $page 頁數 * @param mixed $listRows 每頁數量 * @return $this */ public function page($page, $listRows = null) { if (is_null($listRows) && strpos($page, ',')) { list($page, $listRows) = explode(',', $page); } $this->options['page'] = [intval($page), intval($listRows)]; return $this; } ~~~ >[info] 看到源碼是否覺得眼熟呢?對,與limit方法源碼極其相似,區別在于給查詢選擇options[ 'page' ]賦值,limit是字符串,page是一個數組; ### 3、參數與返回值 * 參數很有意思,值得嘮一嘮 | 序號 | 參數 | 說明 | | :---: | --- | --- | | 1 | $page / 數字 / 字符串 | 根據公式計算出來的當前頁數,公式后面介紹 | | 2 | $listRows / 數字 / 字符串 | 每頁顯示的記錄數量 | * 返回值:仍然是當前查詢對象本身。 ### 4、實例演示 * 這里我們先以上節課學過的limit方法實現一下: ~~~ // 顯示第一頁數據 Db::table('tp5_staff') -> field('id,name,salary') -> limit(0,5) -> select(); // 顯示第二頁數據,只需要將起始位置由0,改為3即可 Db::table('tp5_staff') -> field('id,name,salary') -> limit(5,5) -> select(); // 以此類推,第三頁 Db::table('tp5_staff') -> field('id,name,salary') -> limit(10,5) -> select(); ~~~ >[success] 規律(計算公式): >* limit參數中,變化是的起始位置$offset,查詢數量是不變的$listRows; >* $offset變化規律:(當前頁碼 - 1)* 每頁顯示數量 (這里假設為 5 ) > * 如第1頁的起始位置:(1-1)* 5 = 0 ,即 : limit( 0, 5); > * 第2頁的起始位置:(2-1)* 5 =5,即:limit( 5, 5); > * 第3頁的起始位置:(3-1)* 5 =10 , 即:limit( 10,5 ); > * 以下頁,就依此類推即可。 * 明白了分頁規律后,用page方法可以大簡化這種操作,將上例改寫: ~~~ // 顯示第一頁數據 Db::table('tp5_staff') -> field('id,name,salary') -> page(1,5) -> select(); // 顯示第二頁數據,只需要將起始位置由0,改為3即可 Db::table('tp5_staff') -> field('id,name,salary') -> page(2,5) -> select(); // 以此類推,第三頁 Db::table('tp5_staff') -> field('id,name,salary') -> page(3,5) -> select(); ~~~ >[success] page方法中第一個參數是顯示頁數,第二個是顯示數量,這樣一來,代碼顯示整潔直觀。 * page方法可以只有一個參數:頁數,此時,需要與limit方法配合工作 ~~~ // 顯示第一頁數據,page方法參數為1,后面跟上limit方法設置顯示數量 Db::table('tp5_staff') -> field('id,name,salary') -> page( 1 ) -> limit( 5 ) -> select(); // 顯示第二頁數據,page方法參數為2,后面跟上limit方法設置顯示數量 Db::table('tp5_staff') -> field('id,name,salary') -> page( 2 ) -> limit( 5 ) -> select(); // 以此類推,第三頁 Db::table('tp5_staff') -> field('id,name,salary') -> page( 3 ) -> limit( 5 ) -> select(); ~~~ >[info] 使用了page( 頁數 ) -> limit( 數量 ) 語法,代碼是不是更加的簡潔、優雅了呢? #### 任務1:以每頁5條記錄方法,顯示前三頁數據(tp5_staff表) * Index.php 控制器代碼如下: ~~~ <?php namespace app\index\controller; //導入數據庫類 use think\Db; class Index { public function index(){ $result = Db::table('tp5_staff') // 設置數據表 -> field(['name' => '姓名','salary' => '工資']) // 設置顯示的字段別名 -> page(2,5) //設置顯示第二頁,每頁顯示5條記錄 ->select(); //生成結果集 //查看結果 dump($result); } } ~~~ * 查詢結果如下: ~~~ array(5) { [0] => array(2) { ["姓名"] => string(9) "西門慶" ["工資"] => float(19801) } [1] => array(2) { ["姓名"] => string(9) "潘金蓮" ["工資"] => float(8567) } [2] => array(2) { ["姓名"] => string(6) "宋江" ["工資"] => float(9261) } [3] => array(2) { ["姓名"] => string(9) "老頑童" ["工資"] => float(5000) } [4] => array(2) { ["姓名"] => string(9) "歐陽峰" ["工資"] => float(4900) } } ~~~ * 生成的SQL語句: ~~~ SELECT `name` AS `姓名`,`salary` AS `工資` FROM `tp5_staff` LIMIT 5,5 ~~~ * 在SQLPRO FOR MySQL 中查看: ![](https://box.kancloud.cn/7b301eeb1edc3137e064b896bf0b47d6_1087x775.png) ### 4、總結: >[info] 其實在開發,page方法用得較少,更多的是使用limit方法。但page方法仍需要知道其基本用法,因為我們會在讀其它程序員的源碼時會遇到。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看