THINKPHP 关联查询(多表查询) --- 2018-05-11

THINKPHP 中关联查询(多表查询)可以使用 table() 方法或和join方法,请看示例: 

1、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(); 

2、join() $user = new Model('user'); 

    $list = $user->join('RIGHT JOIN user_profile ON user_stats.id = user_profile.typeid' ); 

3、原生查询 

    $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);




关联查询 :

文章表tp_article

CREATETABLE`tp_article`(`id`int(10)unsignedNOTNULLAUTO_INCREMENTCOMMENT'文章ID',`cid`smallint(5)unsignedNOTNULLDEFAULT'1'COMMENT'分类ID',`title`varchar(255)NOTNULLDEFAULT''COMMENT'标题',`content`longtextCOMMENT'内容',  PRIMARYKEY(`id`))ENGINE=MyISAM AUTO_INCREMENT=4DEFAULTCHARSET=utf8COMMENT='文章表';

文章分类表tp_cate

CREATETABLE`tp_cate`(`id`int(10)unsignedNOTNULLAUTO_INCREMENTCOMMENT'分类ID',`pid`int(10)unsignedNOTNULLDEFAULT'0'COMMENT'上级分类ID',`name`varchar(50)NOTNULLCOMMENT'分类名称',  signedNOTNULLDEFAULT'0'COMMENT'排序',  PRIMARYKEY(`id`),UNIQUEKEY`name`(`name`)USINGBTREE)ENGINE=MyISAM AUTO_INCREMENT=9DEFAULTCHARSET=utf8COMMENT='分类表';

查询语句总结

1.JOIN查询

INNER JOIN: 等同于 JOIN(默认的JOIN类型),如果表中有至少一个匹配,则返回行

LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行

RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行

FULL JOIN: 只要其中一个表中存在匹配,就返回行

$resul=Db::table('tp_Article')      ->join('tp_cate','tp_article.cid=tp_cate.id')      ->select();//完整sql语句      SELECT * FROM `tp_Article` INNER JOIN `tp_cate` ON `tp_Article`.`cid`=`tp_cate`.`id`

2.distinct查询

用于返回唯一不同的值

$result=  Db::table('tp_Article')->distinct(true)->field('title')->select();//完整sql语句 

SELECT DISTINCT  `title` FROM `tp_Article`

3.fetchSql查询

用于直接返回SQL语句

$result = Db::table('tp_Article')->fetchSql(true)->find(1);输入 string(53)"SELECT * FROM `tp_Article` WHERE  `id` = 1 LIMIT 1  "

4.getTableInfo查询

可以获取表信息,信息类型 包括 fields,type,bind,pk,

result= Db::getTableInfo('tp_Article');//完整sql语句 SHOW COLUMNS FROM `tp_Article`

5.view视图查询

视图查询可以实现不依赖数据库视图的多表查询,并不需要数据库支持视图

result=  Db::view('tp_Article',['id'=>'aid','cid','title'])->view('tp_cate','id,pid,name','tp_cate.id=tp_Article.cid','LEFT')->select();

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容