ThinkPHP多表查询
admin
2023-07-01 09:04:01
0

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



相关内容

热门资讯

国际原子能机构:扎波罗热核电站... 当地时间5月30日,国际原子能机构表示,该机构在扎波罗热核电站的团队已要求进入现场,以第一手方式检查...
燃气灶热电偶熄火保护工作原理是... 燃气灶热电偶熄火保护工作原理是什么啊?工作原理如下:当燃具的火焰熄灭的时候,会导致热电偶产生电流下降...
新买燃气灶自动熄火是什么原因 燃气灶熄火原因有很多种,建议先检查一下燃气阀门和灶具的电池是否有问题。管道堵塞:一般情况下,燃气灶管...
新燃气灶有塑料味怎么回事 如果不是点火针的问题,那就看看是不是电池没电或松动了。把燃气灶翻过来,底部一个小盒就是放电池的地方,...
天燃气灶为什么会自动熄火 原因可能是分火盖的小孔被堵住了,这也会引起燃气灶打不着火。发现是分火盖的问题,需要做的是:将分火盖取...
燃气灶为什么开着会自动熄火 问题:燃气灶为什么开着会自动熄火回答:原因是燃气不充足,电池也有问题,不过还是要具体情况具体分析一下...
童真璀璨 喜迎“六一” ↑ 5月29日,湖北省宜昌市秭归县实验小学学生在“花开新时代 童心向未来”为主题的“迎六一”活动中朗...
中方代表:日本没资格在国际场合... 据凤凰卫视报道,5月30日,中国人民解放军专家学者代表团团长、国防大学教授孟祥青在香格里拉对话会的平...
新华每日电讯:稻城亚丁收的什么... 原标题:生态保护、公共权益、文旅发展如何平衡——稻城亚丁景区“道路设卡摆渡收费”调查本报记者 吴光于...
美国这次,真没占到任何便宜 看来,美国这次,真没占到任何便宜。我之前说过,美国重新定义了什么是“自卫”、什么是“停火”,现在是美...