thinkphp5 联表(联合、关联、join)查询
thinkphp5 left join
一、总结
1、作用:left join就是即使不匹配也返回左表中的数据
2、join使用通式:
object join ( mixed join ]] )
弄懂这句话里面的三个参数及两个中括号的意思
第一个参数:mixed join 混合加入的表
第二个参数:mixed $condition = null 两个表mixed时候的条件,有默认值null,这个估计是在设置了外键之后可以省略这个参数
'INNER' mixed时候的类型,有默认值INNER,
第一个中括号:第二三个参数都可以省略
第二个中括号:第三个参数可以省略
'RIGHT')->select();
二、thinkphp5 join
join通常有下面几种类型,不同类型的join操作会影响返回的数据结果。
- INNER JOIN: 等同于 JOIN(默认的JOIN类型),如果表中有至少一个匹配,则返回行
- LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
- RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
- FULL JOIN: 只要其中一个表中存在匹配,就返回行
说明
object join ( mixed join ]] )
JOIN方法也是连贯操作方法之一,用于根据两个或多个表中的列之间的关系,从这些表中查询数据。
参数
join
要关联的(完整)表名以及别名
支持三种写法:
写法'别名' ] 写法'完整表名 别名' 写法'不带数据表前缀的表名'
condition
关联条件。可以为字符串或数组, 为数组时每一个元素都是一个关联条件。
type
关联类型。可以为:INNER、LEFT、RIGHT、FULL,不区分大小写,默认为INNER。
返回值
模型对象
举例
Db::table'think_artist') ->alias'a') ->join'a.id = w.artist_id') ->join'a.card_id = c.id') ->select();
Db::table'think_artist') ->alias'a') ->join'a.id = w.artist_id') ->join'a.card_id = c.id') ->select();
$join = [ ['a.id=w.artist_id'], ['a.card_id=c.id'], ]; Db::table($join)->select();
以上三种写法的效果一样,
__WORK__和
__CARD__在最终解析的时候会转换为
think_work和
think_card。注意:'_表名_'这种方式中间的表名需要用大写
如果不想使用别名,后面的条件就要使用表全名,可以使用下面这种方式
Db::table'__ARTIST__.id = __WORK__.artist_id')->select();
默认采用INNER JOIN 方式,如果需要用其他的JOIN方式,可以改成
Db::table'RIGHT')->select();
表名也可以是一个子查询
$subsql = Db::table'artist_id')->buildSql(); Db::table'a.artist_id = w.artist_id')->select();
因buildSql返回的语句带有(),所以这里不需要在两端再加上()。
相关热词:
相关内容
这些是最新的
热门排行
- THINKPHP5+GatewayWorker+Workerman 开发在线客服系统
- 在手机浏览器网页中点击链接跳转到微信界面的方法
- 尊云网站目录系统 ThinkPHP5网站分类目录程序 v2.2.221011
- CentOS 7安装shadowsock(一键安装脚本)
- AdminTemplate 基于LayUI 2.4.5实现的网站后台管理模板
- 用NW.js(node-webkit)开发多平台的桌面客户端
- PHP生成随机昵称/用户名
- THINKPHP5网站分类目录程序 尊云网站目录系统
- 织梦(DEDECMS)微信支付接口 微信插件
- 基于LayUI开发的 网站后台管理模板 BeginnerAdmin
- 响应式后台网站模板 - AMA.ADMIN
- layuiAdmin后台管理模板 Iframe版
- LayUI 1.0.9 升级 至 LayUI 2.1.4 方法
- 简洁清爽的会员中心模板
- jQuery幸运大转盘抽奖活动代码