ThinkPHP多表联合查询的常用方法

ThinkPHP中关联查询(即多表联合查询)可以使用 table() 方法或和join方法,具体使用如下例所示:

【1、原生查询示例:】

复制代码 代码如下:
$Model = new Model();
$sql = 'select a.id,a.title,b.content from think_test1 as a, think_test2 as b where a.id=b.id '.$map.' order by a.id '.$sort.' limit '.$p->firstRow.','.$p->listRows;
$voList = $Model->query($sql);

【2、join()方法示例:】

复制代码 代码如下:
$user = new Model('user');
$list = $user->join('RIGHT JOIN user_profile ON user_stats.id = user_profile.typeid' );

【3、table()方法示例:】

复制代码 代码如下:
$list = $user->table('user_status stats, user_profile profile')->where('stats.id = profile.typeid')->field('stats.id as id, stats.display as display, profile.title as title,profile.content as content')->order('stats.id desc' )->select();

 

 

手册中说的很少,网上查了一下,以前没用tp的时候,就是mysql中也没怎么用过join,现在好蒙哦,tp中的join怎么用的啊?我是想用它来实现多表查询,比如通过文章表中的uid联系到用户中的id,从而查出用户名,这个我想大家也是经常用吧?我在tp中是这样写的:
$JOKES = M('Jokes');
$wish = $JOKES->join('inner join where jokes.uid = user.id')->order('time DESC')->limit($limit)->select();
打印$wish也打印不出来,求解,这个到底该怎么写呢?或者哪里有资料啊?大牛指教 
    $wish = $JOKES->join('user on jokes.uid = user.id')->order('time DESC')->limit($limit)->select();

 

posted @ 2015-01-23 15:54  Shimily  阅读(1386)  评论(0)    收藏  举报