tp5 多表查询

  • Post author:
  • Post category:其他


article表 : 文章表

列 类型 注释

id mediumint(9) 自动增量

title varchar(60) 标题

keywords varchar(100) 关键字

desc varchar(255) 描述

author varchar(50) 作者

content text 内容

click mediumint(9) [0] 点击量

zan mediumint(9) [0] 点赞数

add_time int(10) 添加时间

cate_id mediumint(9) 所属分类id 和 cate表中的id对应

image varchar(255)

cate表 : 栏目表

列 类型 注释

id mediumint(9) 自动增量

cate_name varchar(30) 栏目名称

type tinyint(1) [1] 栏目类型,1: 列表栏目,2:单页栏目

pid mediumint(9) [0] 上级栏目id

order mediumint(9) [0] 排序



设置article别名a,cate别名c,查询a的所有字段、c的cate_name字段,并分页查询

$data['article'] = ArticleModel::alias('a')->field('a.*,c.cate_name')->join(cate c','a.cate_id = c.id')->paginate(2);

object join ( mixed join [, mixed $condition = null [, string $type = ‘INNER’]] )

JOIN方法也是连贯操作方法之一,用于根据两个或多个表中的列之间的关系,从这些表中查询数据。

参数

join

要关联的(完整)表名以及别名

支持三种写法:

写法1:[ ‘完整表名或者子查询’=>‘别名’ ]

写法2:‘完整表名 别名’

写法3:‘不带数据表前缀的表名’


alias用于设置当前数据表的别名,便于使用其他的连贯操作例如join方法等。

示例:

Db::table(‘think_user’)->alias(‘a’)->join(‘

DEPT

b ‘,‘b.user_id= a.id’)->select();

最终生成的SQL语句类似于:

SELECT * FROM think_user a INNER JOIN think_dept b ON b.user_id= a.id



版权声明:本文为s1095622320原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。