pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

thinkPHP多表查詢及分頁功能實現方法示例

這篇文章主要介紹了thinkPHP多表查詢及分頁功能實現方法,結合具體實例形式分析了thinkPHP多表查詢以及查詢結果的分頁顯示相關實現技巧,需要的朋友可以參考下

本文實例講述了thinkPHP多表查詢及分頁功能實現方法。分享給大家供大家參考,具體如下:

項目業務邏輯為:教師上傳試卷,設置答題卡,發布答題卡給相關的班級或群組,只有試卷關聯的答題卡發布后,該試卷才能在系統試卷中搜索到,同時其他的老師也可以收藏。在前端的收藏模塊中,有個業務是給個input框以提供搜索功能給用戶,但是在事先設計的搜索表中,只有一處試卷ID是和試卷表關聯的,如果用戶搜索試卷題目那豈不要兩表查詢了,一開始我想到的方法是在收藏表中多加個字段,也就是把試卷題目的字段添加到收藏表中,業務完成。今天在處理題庫分享的邏輯時,又發現了這個問題,看了下同事設計的分享表只有一個題庫ID,于是我便把同事叫過來“糾正”,但事先我還是想聽聽同事的設計思路,同事說量表查詢啊,我勒個去,看來我一張表查詢使用習慣了,沒有想到此種情況,被鄙視了,于是正視了自己的錯誤,當然了前提是說了下自己的思路,現在想來不怎么對,下面便給給出相關的tp代碼。

// 異步請求試卷夾下某一個試卷夾的列表
public function ajaxLists() {
  extract($_GET);
  $page = intval($_GET['p']);
  $prefix = C('DB_PREFIX');
  $collect = $prefix . 'collect';
  $resource = $prefix . 'resource';
  if ($keyword) {
    $arr = preg_split('/ /', $keyword);
    // 搜索標簽
    foreach ($arr as $value) {
      $id = A('Home/Papers')->trunWordToId(array($value));
      if ($id) {
        $where['resource.rta_id'][] = array('LIKE', '%,' . $id . ',%');
      }
      $where['resource.re_title'][] = array('LIKE', '%' . $value . '%');
    }
    if ($where['resource.rta_id']) {
      $where['resource.rta_id'][] = 'AND';
    }
    if ($where['resource.re_title']) {
      $where['resource.re_title'][] = 'OR';
    }
    if ($where['resource.re_title'] && $where['resource.rta_id']) {
      $where['_logic'] = 'OR';
    }
  }
  if ($where) {
    $map['_complex'] = $where;
  }
  $map['collect.a_id'] = $this->authInfo['a_id'];
  $map['_string'] = 'collect.col_object_id = resource.re_id';
  // 總數
  $count = M()->table("$collect collect, $resource resource")->where($map)->count();
  // 總頁數
  $regNum = ceil($count/6);
  // 驗證當前請求頁碼是否大于總頁數
  $page = $page > $regNum ? $regNum : $page;
  // 引入ajax分頁庫
  import("@.ORG.Util.AjaxPage");
  $Page = new AjaxPage($count, 6);
  $list['page'] = trim($Page->show());
  $list['list'] = M()->table("$collect collect, $resource resource")->where($map)->order('col_id DESC')->limit($Page->firstRow . ',' . $Page->listRows)->field('collect.col_id,collect.col_object_id,resource.re_id,resource.re_title,resource.re_created,resource.re_collect_count,resource.re_score_count,resource.re_score_num,resource.rta_id')->select();
  // 獲取試卷的標簽
  $wheree['rta_id'] = array('IN', trim(str_replace(',,', ',', implode('', getValueByField($list['list'], 'rta_id'))), ','));
  $tag = setArrayByField(M('ResourceTag')->where($wheree)->field('rta_id,rta_title')->select(), 'rta_id');
  // 把標簽和試卷對應
  foreach ($list['list'] as $key => &$value) {
    $str = '';
    foreach ($tag as $k => $v) {
      if (strpos($value['rta_id'], ',' . $k . ',') !== FALSE) {
        $str .= ' | ' . $v['rta_title'];
      }
      $value['rta_title'] = trim($str, ' |');
    }
    if ($keyword) {
      foreach ($arr as $vv) {
        if (strpos($value['re_title'], $vv) !== FALSE) {
          $value['re_title'] = str_replace($vv, '<font color=\'red\'>' . $vv . '</font>', $value['re_title']);
        }
        if (strpos($value['rta_title'], $vv) !== FALSE) {
          $value['rta_title'] = str_replace($vv, '<font color=\'red\'>' . $vv . '</font>', $value['rta_title']);
        }
      }
    }
    $value['re_created'] = date('Y-m-d', $value['re_created']);
  }
  echo json_encode($list);
}

更多關于thinkPHP相關內容感興趣的讀者可查看本站專題:《ThinkPHP入門教程》、《thinkPHP模板操作技巧總結》、《ThinkPHP常用方法總結》、《codeigniter入門教程》、《CI(CodeIgniter)框架進階教程》、《Zend FrameWork框架入門教程》及《PHP模板技術總結》。

希望本文所述對大家基于ThinkPHP框架的PHP程序設計有所幫助。

【網站聲明】本站除付費源碼經過測試外,其他素材未做測試,不保證完整性,網站上部分源碼僅限學習交流,請勿用于商業用途。如損害你的權益請聯系客服QQ:2655101040 給予處理,謝謝支持。

相關文檔推薦

這篇文章主要介紹了ThinkPHP實現轉換數據庫查詢結果數據到對應類型的方法,涉及thinkPHP模型類操作及針對源碼文件的相關修改方法,需要的朋友可以參考下
這篇文章主要介紹了thinkPHP中鉤子的使用方法,結合實例形式分析了thinkPHP鉤子的創建、添加、使用等相關操作技巧與注意事項,需要的朋友可以參考下
這篇文章主要介紹了thinkphp5.0驗證類的簡單有效的使用方法,一起學習下。
本文主要講了thinkphp5.0版本中自定義驗證規則的使用方法和一些注意事項。
這篇文章主要介紹了thinkPHP基于反射實現鉤子的方法,結合實例形式分析了php基于系統自帶的ReflectionClass、ReflectionMethod 類與函數實現鉤子功能的相關操作技巧,需要的朋友可以參考下
這篇文章主要介紹了thinkPHP通用控制器實現方法,結合實例形式分析了thinkPHP針對數據庫的基本CURD操作方法的封裝實現技巧,需要的朋友可以參考下
主站蜘蛛池模板: 上海冠顶工业设备有限公司-隧道炉,烘箱,UV固化机,涂装设备,高温炉,工业机器人生产厂家 | 圈酒招商网【jiushuitv.com】_酒水招商_代理_加盟平台 | 数控车床-立式加工中心-多功能机床-小型车床-山东临沂金星机床有限公司 | 橡胶接头_橡胶软接头_可曲挠橡胶接头-巩义市创伟机械制造有限公司 | 长沙印刷厂-包装印刷-画册印刷厂家-湖南省日大彩色印务有限公司 青州搬家公司电话_青州搬家公司哪家好「鸿喜」青州搬家 | 清洁设备_洗地机/扫地机厂家_全自动洗地机_橙犀清洁设备官网 | 风化石头制砂机_方解石制砂机_瓷砖石子制砂机_华盛铭厂家 | 便携式XPDM露点仪-在线式防爆露点仪-增强型烟气分析仪-约克仪器 冰雕-冰雪世界-大型冰雕展制作公司-赛北冰雕官网 | 氮化镓芯片-碳化硅二极管 - 华燊泰半导体| 设定时间记录电子秤-自动累计储存电子秤-昆山巨天仪器设备有限公司 | 天津仓库出租网-天津电商仓库-天津云仓一件代发-【博程云仓】 | 高压绝缘垫-红色配电房绝缘垫-绿色高压绝缘地毯-上海苏海电气 | RV减速机-蜗轮蜗杆减速机-洗车机减速机-减速机厂家-艾思捷 | 钢格板|镀锌钢格板|热镀锌钢格板|格栅板|钢格板|钢格栅板|热浸锌钢格板|平台钢格板|镀锌钢格栅板|热镀锌钢格栅板|平台钢格栅板|不锈钢钢格栅板 - 专业钢格板厂家 | 高压互感器,电流互感器,电压互感器-上海鄂互电气科技有限公司 | 大型果蔬切片机-水果冬瓜削皮机-洗菜机切菜机-肇庆市凤翔餐饮设备有限公司 | 淋巴细胞分离液_口腔医疗器材-精欣华医疗器械(无锡)有限公司 | 防火卷帘门价格-聊城一维工贸特级防火卷帘门厂家▲ | 非小号行情 - 专业的区块链、数字藏品行情APP、金色财经官网 | 牛奶检测仪-乳成分分析仪-北京海谊 | 齿轮减速机_齿轮减速电机-VEMT蜗轮蜗杆减速机马达生产厂家瓦玛特传动瑞环机电 | 空气净化器租赁,空气净化器出租,全国直租_奥司汀净化器租赁 | 细砂提取机,隔膜板框泥浆污泥压滤机,螺旋洗砂机设备,轮式洗砂机械,机制砂,圆锥颚式反击式破碎机,振动筛,滚筒筛,喂料机- 上海重睿环保设备有限公司 | 长沙一级消防工程公司_智能化弱电_机电安装_亮化工程专业施工承包_湖南公共安全工程有限公司 | 过跨车_过跨电瓶车_过跨转运车_横移电动平车_厂区转运车_无轨转运车 | 制冷采购电子商务平台——制冷大市场 | 卡诺亚轻高定官网_卧室系统_整家定制_定制家居_高端定制_全屋定制加盟_定制家具加盟_定制衣柜加盟 | 环压强度试验机-拉链拉力试验机-上海倾技仪器仪表科技有限公司 | 红酒招商加盟-葡萄酒加盟-进口红酒代理-青岛枞木酒业有限公司 | 水厂污泥地磅|污泥处理地磅厂家|地磅无人值守称重系统升级改造|地磅自动称重系统维修-河南成辉电子科技有限公司 | 断桥铝破碎机_铝合金破碎机_废铁金属破碎机-河南鑫世昌机械制造有限公司 | 百度爱采购运营研究社社群-店铺托管-爱采购代运营-良言多米网络公司 | 磁力抛光研磨机_超声波清洗机厂家_去毛刺设备-中锐达数控 | 成都亚克力制品,PVC板,双色板雕刻加工,亚克力门牌,亚克力标牌,水晶字雕刻制作-零贰捌广告 | 湿地保护| 没斑啦-专业的祛斑美白嫩肤知识网站-去斑经验分享 | 儿童乐园|游乐场|淘气堡招商加盟|室内儿童游乐园配套设备|生产厂家|开心哈乐儿童乐园 | 衢州装饰公司|装潢公司|办公楼装修|排屋装修|别墅装修-衢州佳盛装饰 | 防伪溯源|防窜货|微信二维码营销|兆信_行业内领先的防伪防窜货数字化营销解决方案供应商 | 非标压力容器_碳钢储罐_不锈钢_搪玻璃反应釜厂家-山东首丰智能环保装备有限公司 | 工业机械三维动画制作 环保设备原理三维演示动画 自动化装配产线三维动画制作公司-南京燃动数字 聚合氯化铝_喷雾聚氯化铝_聚合氯化铝铁厂家_郑州亿升化工有限公司 |