欢迎访问WDPHP素材源码!今天是2024年04月26日 星期五,又是一个不眠夜!
您好,游客 [ 马上登录 | 注册帐号 | 微信登录 | QQ登录]
当前位置:首页 > 教程 > PHP教程 > 

thinkphp5 联表(联合、关联、join)查询
栏目分类:PHP教程    发布日期:2018-06-12    浏览次数:6884次     收藏

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返回的语句带有(),所以这里不需要在两端再加上()。

相关热词:

源码 模板 特效 素材 资源 教程 站长