• 技术文章 >php框架 >ThinkPHP

    thinkphp5中join的用法是什么

    长期闲置长期闲置2022-04-25 11:01:16原创772

    在thinkphp5中,join用于根据两个或者多个表中列之间的关系,从这些表中查询数据,是连贯操作方法之一,返回的结果是一个模型对象,语法为“join ( 要关联的表名以及别名 [ 关联条件 [ 关联类型]] )”。

    本文操作环境:Windows10系统、ThinkPHP5版、Dell G3电脑。

    thinkphp5中join的用法是什么

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

    说明

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

    参数

    join:要关联的(完整)表名以及别名,支持三种写法:

    condition:关联条件。可以为字符串或数组, 为数组时每一个元素都是一个关联条件。

    type:关联类型。可以为:INNER、LEFT、RIGHT、FULL,不区分大小写,默认为INNER。

    返回值:模型对象

    join通常有下面几种类型,不同类型的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返回的语句带有(),所以这里不需要在两端再加上()。

    推荐学习:《PHP视频教程

    以上就是thinkphp5中join的用法是什么的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:thinkphp
    上一篇:thinkphp中m方法返回值是什么 下一篇:thinkphp3.2中vendor的用法是什么
    千万级数据并发解决方案

    相关文章推荐

    • 完全掌握thinkphp的事件绑定、监听和订阅• Thinkphp学习之路由定义 伪静态规则(总结分享)• thinkphp3.1与3.2的区别是什么• thinkphp中import的用法是什么• thinkphp中where方法怎么用
    1/1

    PHP中文网