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

2022-09-28 20:09:20 字數 2124 閱讀 9628

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

// 非同步請求試卷夾下某乙個試卷夾的列表

public function ajaxlists()

$where['resource.re_title'] = array('like', '%' . $value . '%');

}if ($where['resource.rta_id'])

if ($where['resource.re_title'])

if ($where['resource.re_title'] && $where['resource.rta_id'])

} if ($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_xkjqxncid'] = array('in', trim(str_replace(',,', ',', implode('', getvaluebyfield($list['list'], 'rta_id'))), ','));

$tag = setarraybyfie程式設計客棧ld(m('resourcetag')->where($wheree)->field('rta_id,rta_title')->select(), 'rta_id');

// 把標籤和試卷對應

foreach ($list['list'] as $key => &$value)

$value['rta_title'] = trim($str, ' |');

}if ($keyword)

if (strpos($value[程式設計客棧'rta_title'], $vv) !== false) }}

$value['re_created'] = date('y-m-d', $value['re_created']);

程式設計客棧 }

echo json_encode($list);

}

thinkphp多表查詢

1.table多表連線 語法 select 表1.欄位,表2.欄位,from 表1 as 別名1 表2 as 別名2 where 表1.欄位 表2.欄位。這其中就是通過where來進行兩個表的關聯操作。如下 public function test 其中table中有兩個引數 第乙個引數是資料表的名...

SQLServer多表聯查,多表分頁查詢

多表聯查 select p.s.sheng i.shi from dbo productrecordinfo 表名 p left join shenginfo s on p.shenginfo s.shengid 使用left join左連線 讓兩個表中的指定字段產生連線關係 left join s...

多表查詢分頁儲存過程

set ansi nulls on set quoted identifier on go 支援多表查詢分頁儲存過程 事理改進 2012.3 多表聯查1 declare count int exec proc datapagination sl article a,sl user u u.realn...