<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      【PHP】關于fastadmin框架中使用with進行連表查詢時setEagerlyType字段的理解

      前言

      FastAdmin是我第一個接觸的后臺管理系統框架。FastAdmin是一款開源且免費商用的后臺開發框架,它基于ThinkPHP和Bootstrap兩大主流技術構建的極速后臺開發框架,它有著非常完善且強大的功能和便捷的開發體驗,使我逐漸喜歡上了它。

      什么是setEagerlyType?

      1.回歸正題,什么是setEagerlyType?

      setEagerlyType是fastadmin在使用關聯查詢時提供的配置字段,為設置預載入方式。根據官方文檔描述,在V5.0.4+版本開始一對一關聯預載入支持兩種方式:setEagerlyType(0) 是JOIN方式(一次查詢) setEagerlyType(1)是IN方式(兩次查詢)。

      2.例子

      2.1 當使用join的方式(setEagerlyType(0))

      在model層對應的model文件加入該函數 $this->belongsTo(被關聯表,外鍵, 主鍵, [], 'LEFT')->setEagerlyType(關聯模式 0/1 );

      public function product()
          {
              return $this->belongsTo('app\common\model\xxxx\xxxx',  'PID', 'PID', [], 'LEFT')->setEagerlyType(0);
          }
      
      //此處返回的是一個二維數組
      $List=$this->xxxxModel->with('product')->page($page, $pageSize)->select();
      

      因為返回的是一個二維數組所以可以使用關聯表中的字段product.name='xxx'

      $whiskybaseList=$this->xxxxxModel->with('whiskybaseProduct')->where('product.name','xxx')->page($page, $pageSize)->select();
      

      當然,如果需要關聯多張表也可以把with中的參數寫成數組形式

      $whiskybaseList=$this-xxxxModel->with(['pProduct','xxxxxxxxx','xxxxx'])->page($page, $pageSize)->select();
      

      2.2 當使用In的方式(setEagerlyType(1))

      public function product()
          {
              return $this->belongsTo('app\common\model\xxxx\xxxx',  'PID', 'PID', [], 'LEFT')->setEagerlyType(1);
          }
      
      //此處返回的是一個一維數組
      $whiskybaseList=$this->xxxxModel->with('product')->page($page, $pageSize)->select();
      

      因為使用的是IN模式,返回的是一個一維數組所以無法使用關聯表中的字段product.name='xxx'

      $whiskybaseList=$this->xxxxModel->with('product')->where('product.name','xxx')->page($page, $pageSize)->select();
      

      使用IN模式調用關聯表的字段是查不到關聯數據的
      image

      3.請求速度

      通常情況下使用 JOIN 操作比 IN 子查詢更快。這是因為數據庫優化器在執行查詢計劃時能夠更有效地處理 JOIN 操作,而且 JOIN 操作可以使用索引來加速數據檢索。

      4.疑問

      我前段時間使用關聯表的時候就遇到了一個問題,很奇怪,希望知道的大佬評論區指點一下!

      問題!

      就是公司要求我爬取國外的一個網站的數據,導入平臺作為借鑒,然后爬取并清理完數據以后,一張是產品表,里面有一個PID對應著產品詳情表的PID,所以我在做查詢時我需要關聯詳情表的PID獲取詳情,數據的話產品表與詳情表都各15w條數據,而且我將PID設置為索引了已經,然而當我在做分頁查詢時,使用的是join查詢,查詢100s都沒出結果,但是我使用IN查詢,0.1s既有結果,這又是為什么?代碼如下

      model層

      public function whiskybaseProduct()
          {
              return $this->belongsTo('app\common\model\Whiskybase\Whiskybase',  'PID', 'PID', [], 'LEFT')->setEagerlyType(1);
          }
      

      業務層

      //因為查詢的數據字段基本大部分要用到,所以也沒有使用field去指定返回什么字段,雖然這樣能快一丟丟
      $whiskybaseList=$this->WhiskybasedetailModel->where('title_zh', 'LIKE', '%' . $keyWord . '%')->with('whiskybaseProduct')->page($page, $pageSize)->order($sort, 'asc')->select();
      

      業務層不變,model層setEagerlyType(1)改為IN方式setEagerlyType(0),查詢速度從0.1s變為100s+
      如果有大佬知道,請評論區指導一下~謝謝!

      上述為個人整理內容,水平有限,如有錯誤之處,望各位園友不吝賜教!如果覺得不錯,請點擊推薦和關注!謝謝~??????? [鮮花][鮮花][鮮花]

      posted @ 2024-07-09 16:53  我恨bug  閱讀(1016)  評論(2)    收藏  舉報
      主站蜘蛛池模板: 久久国产国内精品国语对白| 无线日本视频精品| 在线观看国产成人av天堂| 国产精品一品二区三四区| 亚洲熟妇无码八av在线播放| 熟女亚洲综合精品伊人久久| 午夜性爽视频男人的天堂| 91中文字幕在线一区| 国产精品国产精品偷麻豆| 房东老头揉捏吃我奶头影片| 99久久国产成人免费网站| 久久精品国产亚洲av高| 亚洲国产精品乱码一区二区| 亚洲最大成人av在线天堂网| 午夜精品福利亚洲国产| 国产精品日日摸夜夜添夜夜添无码| 天堂影院一区二区三区四区| 亚洲精中文字幕二区三区| 偷偷做久久久久免费网站| 精品素人AV无码不卡在线观看| 靖宇县| 97精品尹人久久大香线蕉| 18禁视频一区二区三区| 亚洲国产精品久久久天堂麻豆宅男 | 日本一区三区高清视频| 亚洲一区二区三区| 国产精品一区二区在线欢| 男女啪啪高潮激烈免费版 | 综合激情网一区二区三区| 夜色福利站WWW国产在线视频| 欧洲亚洲精品免费二区| 国产粉嫩系列一区二区三| 中文字幕在线日韩| 国产乱人伦偷精品视频下| 国产人妻精品无码av在线| 人妻一区二区三区人妻黄色| 国产精品人妻久久无码不卡| 野花社区www视频日本| 99久久免费精品色老| 久久99精品久久水蜜桃| 福利在线视频一区二区|