php 多表查询输出,ThinkPHP多表查询
ThinkPHP多表查詢處理
ThinkPHP多表連接查詢處理
ThinkPHP關(guān)聯(lián)查詢(多表查詢)
網(wǎng)上找到三種方法:table()、join()、原生SQL語句查詢。(以下三種方法輸出結(jié)果一致,并且很好的保留了ThinkPHP自己的分頁功能)
第一種:table()方法
實例:需要連接查詢兩張表(表agent和表transinfo)$Model=new?Model();
$sqlcount="select?count(*)?as?mycount??from?agent?a?,transinfo?t?where?t.clientId=a.id?and?t.transType?like?'%agent%'?and?a.id?in?(".$agent_str.")";
$listCount?=?$Model?->query($sqlcount);
$Page?=?new?Page?(?$listCount[0][mycount],?2?);
$show?=?$Page->show?();
$list?=?$Model->table('agent?a,?transinfo?t')->where("t.clientId=a.id?and?t.transType?like?'%agent%'?and?a.id?in?(".$agent_str.")")->limit?(?$Page->firstRow?.?','?.?$Page->listRows?)->select();
//echo?$Model->getLastSql();
$this->assign('list',$list);//?賦值數(shù)據(jù)集
$this->assign('page',$show);//?賦值分頁輸出
第二種:join()方法
實例:需要連接查詢兩張表(表agent和表transinfo)
$Model=new?Model();
$agentModel?=?$Model->Table("agent");
$listCount?=?$agentModel->join("?AS?a?RIGHT?JOIN?transinfo?t?ON?t.clientId=a.id?and?t.transType?like?'%agent%'?and?a.id?in?(".$agent_str.")")
->field("count(*)?as?mycount")
->select();
$Page?=?new?Page?(?$listCount[0][mycount],?2?);
$show?=?$Page->show?();
$Model=new?Model();
$agentModel?=?$Model->Table("agent");
$list?=$agentModel->join("?AS?a?RIGHT?JOIN?transinfo?t?ON?t.clientId=a.id?and?t.transType?like?'%agent%'?and?a.id?in?(".$agent_str.")?order?by?t.id?DESC?limit?".$Page->firstRow.",".$Page->listRows)
->field("a.*,t.*")
->select();
//echo?$agentModel->getLastSql();
$this->assign('list',$list);//?賦值數(shù)據(jù)集
$this->assign('page',$show);//?賦值分頁輸出
提示:你也可以這樣實例化更簡潔(官方推薦的):$agentModel = M('Agent'); // 實例化User對象
第三種:原生SQL語句查詢法$Model=new?Model();
$sqlcount="select?count(*)?as?mycount??from?agent?a?,transinfo?t?where?t.clientId=a.id?".$where.?"?and?t.transType?like?'%agent%'?and?a.id?in?(".$agent_str.")";
$listCount?=?$Model?->query($sqlcount);
$Page?=?new?Page($listCount[0]['mycount'],2);//?實例化分頁類?傳入總記錄數(shù)和每頁顯示的記錄數(shù)
$show?=?$Page->show();
$sqlList="select?t.*,a.*?from?agent?a?,transinfo?t?where?t.clientId=a.id?".$where.?"?and?t.transType?like?'%agent%'?and?a.id?in?(".$agent_str.")?limit?{$Page->firstRow},{$Page->listRows}";
$list?=?$Model?->query($sqlList);
$this->assign('list',$list);//?賦值數(shù)據(jù)集
$this->assign('page',$show);//?賦值分頁輸出
參考資料:
END
總結(jié)
以上是生活随笔為你收集整理的php 多表查询输出,ThinkPHP多表查询的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql挂载数据卷_记一次生产数据库数
- 下一篇: 修改表名_面试官:如何批量修改mysql