Thinkphp中join的基本用法是怎样,可以做什么
Admin 2022-07-25 群英技术资讯 614 次浏览
在thinkphp5中,join用于根据两个或者多个表中列之间的关系,从这些表中查询数据,是连贯操作方法之一,返回的结果是一个模型对象,语法为“join ( 要关联的表名以及别名 [ 关联条件 [ 关联类型]] )”。
本文操作环境:Windows10系统、ThinkPHP5版、Dell G3电脑。
JOIN方法也是连贯操作方法之一,用于根据两个或多个表中的列之间的关系,从这些表中查询数据。
说明
object join ( mixed join [, mixed $condition = null [, string $type = 'INNER']] )
参数
join:要关联的(完整)表名以及别名,支持三种写法:
写法1:[ '完整表名或者子查询'=>'别名' ]
写法2:'完整表名 别名'
写法3:'不带数据表前缀的表名'
condition:关联条件。可以为字符串或数组, 为数组时每一个元素都是一个关联条件。
type:关联类型。可以为:INNER、LEFT、RIGHT、FULL,不区分大小写,默认为INNER。
返回值:模型对象
join通常有下面几种类型,不同类型的join操作会影响返回的数据结果。
INNER JOIN: 等同于 JOIN(默认的JOIN类型),如果表中有至少一个匹配,则返回行
LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
FULL JOIN: 只要其中一个表中存在匹配,就返回行
示例如下:
Db::table('think_artist') ->alias('a') ->join('think_work w','a.id = w.artist_id') ->join('think_card c','a.card_id = c.id') ->select();
Db::table('think_artist') ->alias('a') ->join('__WORK__ w','a.id = w.artist_id') ->join('__CARD__ c','a.card_id = c.id') ->select();
$join = [ ['think_work w','a.id=w.artist_id'], ['think_card c','a.card_id=c.id'], ]; Db::table('think_user')->alias('a')->join($join)->select();
以上三种写法的效果一样,__WORK__和 __CARD__在最终解析的时候会转换为 think_work和 think_card。注意:'_表名_'这种方式中间的表名需要用大写
如果不想使用别名,后面的条件就要使用表全名,可以使用下面这种方式
Db::table('think_user')->join('__WORK__','__ARTIST__.id = __WORK__.artist_id')->select();
默认采用INNER JOIN 方式,如果需要用其他的JOIN方式,可以改成
Db::table('think_user')->alias('a')->join('word w','a.id = w.artist_id','RIGHT')->select();
表名也可以是一个子查询
$subsql = Db::table('think_work')->where(['status'=>1])->field('artist_id,count(id) count')->group('artist_id')->buildSql(); Db::table('think_user')->alias('a')->join([$subsql=> 'w'], 'a.artist_id = w.artist_id')->select();
因buildSql返回的语句带有(),所以这里不需要在两端再加上()。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
今天小编就为大家分享一篇关于PDO::query讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
在PHP编程中,当有一个四则运算的字符串表达式,要怎么编写函数来计算四则运算的结果呢?其实利用栈这种数据结构来计算表达式很赞,下面小编将为你分享PHP用函数如何实现四则运算的代码。
我们在开发的过程中常常遇到需要把对象或者数组进行序列号存储,反序列化输出的情况。特别是当需要把数组存储到mysql数据库中时,我们时常需要将数组进行序列化操作。 序列化(串行化):是将变量转换为可保存或传输的字符串的过程; 反序列化(反串行化):就是在适当的时候把这个字符串再转化成原来的变量使用。 这两个过程结合起来,可以轻松地存储和传输数据,使程序更具维护性。 常见的php序列化和反序列化方式主要有:serialize,unserialize;json_encode,json_decode。_来自PHP 教程,w3cschool编程狮。
我们可以通过php --ri命令查看swoole版本,编译升级,只需要从pecl官网下载最新的稳定版,这就相当于重新安装一次新版本就好了。pecl升级,使用pecl upgrade swoole命令。
本篇文章带大家了解一下PHP中接收外部参数的几种方式,希望对大家有所帮助!
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008