Thinkphp中join的基本用法是怎样,可以做什么
Admin 2022-07-25 群英技术资讯 691 次浏览
在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进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
很多朋友都有遇到PHP中,使用fopen来生成文件时,如果文件名是中文,那么就会出现乱码的情况,那么我们应该如何解决这个问题呢?下面给大家介绍一个解决方法。
1.imagecreate()函数imagecreate()函数是基于一个调色板的画布。<?php$im=imagecreate(200,80);//创建一个宽200,高80的画布。$white=imagecolorallocate($im,225,35,180);//设置画布的背景颜色imagegif(
TP3.2框架本文实例讲述了TP3.2框架分页相关实现方法。分享给大家供大家参考,下文的讲解详细,步骤过程清晰,对大家进一步学习和理解相关知识有一定的帮助。
php返回json数据:1、PHP中的json_encode()用于JSON编码变量,如果功能成功返回JSON数据,则返回FALSE。2、string json_encode ( $value [, $options = 0 ] )。
php中str_replace的替换:1、以字符替换字符串中的一些字符;2、语法str_replace(find,replace,string,count);3、参数Find、replace、string、count。
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008