ThinkPHP多表查詢

來源:互聯網
上載者:User

標籤:thinkphp多表查詢   thinkphp兩張表串連查詢   

ThinkPHP多表查詢處理

ThinkPHP多表串連查詢處理

ThinkPHP關聯查詢(多表查詢)


網上找到三種方法:table()、join()、原生SQL語句查詢。(以下三種方法輸出結果一致,並且很好的保留了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);// 賦值資料集$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);// 賦值資料集$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);// 執行個體化分頁類 傳入總記錄數和每頁顯示的記錄數$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);// 賦值資料集$this->assign(‘page‘,$show);// 賦值分頁輸出




參考資料:

http://hi.baidu.com/wjlhh001/item/18d9a91031081b5e2a3e22af

http://www.yunda51.com/304.html

http://www.w3school.com.cn/sql/sql_join_right.asp



END



本文出自 “PHPer許琴-專註於PHP技術” 部落格,請務必保留此出處http://xuqin.blog.51cto.com/5183168/1564492

ThinkPHP多表查詢

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.