ThinkPHP多表查询处理

ThinkPHP多表连接查询处理

ThinkPHP关联查询(多表查询)


网上找到三种方法:table()、join()、原生SQL语句查询。(以下三种方法输出结果一致,并且很好的保留了ThinkPHP自己的分页功能)


第一种:table()方法

实例:需要连接查询两张表(表agent和表transinfo)

$Model=newModel();$sqlcount="selectcount(*)asmycountfromagenta,transinfotwheret.clientId=a.idandt.transTypelike'%agent%'anda.idin(".$agent_str.")";$listCount=$Model->query($sqlcount);$Page=newPage($listCount[0][mycount],2);$show=$Page->show();$list=$Model->table('agenta,transinfot')->where("t.clientId=a.idandt.transTypelike'%agent%'anda.idin(".$agent_str.")")->limit($Page->firstRow.','.$Page->listRows)->select();//echo$Model->getLastSql();$this->assign('list',$list);//赋值数据集$this->assign('page',$show);//赋值分页输出



第二种:join()方法

实例:需要连接查询两张表(表agent和表transinfo)


$Model=newModel();$agentModel=$Model->Table("agent");$listCount=$agentModel->join("ASaRIGHTJOINtransinfotONt.clientId=a.idandt.transTypelike'%agent%'anda.idin(".$agent_str.")")->field("count(*)asmycount")->select();$Page=newPage($listCount[0][mycount],2);$show=$Page->show();$Model=newModel();$agentModel=$Model->Table("agent");$list=$agentModel->join("ASaRIGHTJOINtransinfotONt.clientId=a.idandt.transTypelike'%agent%'anda.idin(".$agent_str.")orderbyt.idDESClimit".$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=newModel();$sqlcount="selectcount(*)asmycountfromagenta,transinfotwheret.clientId=a.id".$where."andt.transTypelike'%agent%'anda.idin(".$agent_str.")";$listCount=$Model->query($sqlcount);$Page=newPage($listCount[0]['mycount'],2);//实例化分页类传入总记录数和每页显示的记录数$show=$Page->show();$sqlList="selectt.*,a.*fromagenta,transinfotwheret.clientId=a.id".$where."andt.transTypelike'%agent%'anda.idin(".$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