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

附上项目中的left join用法的代码:

1 $data = M("groups g")
2    ->field('g.id,g.group_name,e.uid')
3    ->join('left join equipment e ON g.group_name = e.group_name')
4     ->where(array('g.user_id' => '1'))
5     ->select();

下面是手册中的例子:

join通常有下面几种类型,不同类型的join操作会影响返回的数据结果。

  • INNER JOIN: 如果表中有至少一个匹配,则返回行,等同于 JOIN
  • LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
  • RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
  • FULL JOIN: 只要其中一个表中存在匹配,就返回行

join方法可以支持以上四种类型,例如:

1 $Model = M('Artist');
2 $Model
3 ->join('think_work ON think_artist.id = think_work.artist_id')
4 ->join('think_card ON think_artist.card_id = think_card.id')
5 ->select();

join方法支持多次调用,但指定的数据表必须是全称,但我们可以这样来定义:

1 $Model
2 ->join('__WORK__ ON __ARTIST__.id = __WORK__.artist_id')
3 ->join('__CARD__ ON __ARTIST__.card_id = __CARD__.id')
4 ->select();

__WORK__和 __CARD__在最终解析的时候会转换为 think_work和 think_card

默认采用INNER JOIN 方式,如果需要用其他的JOIN方式,可以改成

1 $Model->join('RIGHT JOIN __WORK__ ON __ARTIST__.id = __WORK__.artist_id')->select();

或者使用:

1 $Model->join('__WORK__ ON __ARTIST__.id = __WORK__.artist_id','RIGHT')->select();

join方法的第二个参数支持的类型包括:INNER LEFT RIGHT FULL。

如果join方法的参数用数组的话,只能使用一次join方法,并且不能和字符串方式混合使用。 例如:

1 join(array(' __WORK__ ON __ARTIST__.id = __WORK__.artist_id','__CARD__ ON __ARTIST__.card_id = __CARD__.id'))

使用数组方式的情况下,第二个参数无效。因此必须在字符串中显式定义join类型,例如:

1 join(array(' LEFT JOIN __WORK__ ON __ARTIST__.id = __WORK__.artist_id','RIGHT JOIN __CARD__ ON __ARTIST__.card_id = __CARD__.id'))

转载于:https://www.cnblogs.com/cuculus/p/7008690.html

thinkphp中join用法相关推荐

  1. php里边的join,thinkphp中join用法

    JOIN方法也是连贯操作方法之一,用于根据两个或多个表中的列之间的关系,从这些表中查询数据. 附上项目中的left join用法的代码: $data = M("groups g") ...

  2. oracle中何时会用到join,Oracle中join用法的演示

    以下的文章主要介绍的是Oracle中join用法,如果你是其方面的新手,对Oracle中oin的实际用法很感兴趣,但是却找不到一些资料去对其进行更深入的了解的话,你不妨浏览以下的文章对其进行了解. O ...

  3. thinkPHP中{$Think }用法

    thinkPHP中{$Think }用法[系统变量输出]普通的模板变量需要首先赋值后才能在模板中输出,系统变量可以直接在模板中输出,通常以{$Think 打头支持输出 $_SERVER.$_ENV. ...

  4. thinkphp left join 用法

    如果sql语句是使用left做关联表的话在tp中也需要声明,因为默认的是inner join 用法: ->join('user AS b ON b.id = a.user_id', 'LEFT' ...

  5. php中join用法,PHP join()函数用法与实例讲解

    PHP join() 函数 实例 把数组元素组合为一个字符串: $arr = array('Hello','World!','Beautiful','Day!'); echo join(" ...

  6. php中msubstr,PHP学习:thinkphp中字符截取函数msubstr()用法分析

    <PHP学习:thinkphp中字符截取函数msubstr()用法分析>要点: 本文介绍了PHP学习:thinkphp中字符截取函数msubstr()用法分析,希望对您有用.如果有疑问,可 ...

  7. Java线程中wait、await、sleep、yield、join用法总结

    文章目录 一.wait().notify().notifyAll()用法 二.await().signal().signalAll()用法 三 .yield().join()用法 四.wait().a ...

  8. python中os.path.join()的循环用法_Python中.join()和os.path.join()两个函数的用法详解

    Python中有.join()和os.path.join()两个函数,具体作用如下: . join():    连接字符串数组.将字符串.元组.列表中的元素以指定的字符(分隔符)连接生成一个新的字符串 ...

  9. python3 join函数_Python中.join()和os.path.join()两个函数的用法详解

    Python中有.join()和os.path.join()两个函数,具体作用如下: . join(): 连接字符串数组.将字符串.元组.列表中的元素以指定的字符(分隔符)连接生成一个新的字符串 '' ...

最新文章

  1. 赛灵思:人工智能芯片发展方向与误区
  2. 网络推广中移动端优化如何在细节中取胜?
  3. Python 浮点数运算
  4. 工作汇报ppt案例_【赠书】开工大吉!今年一定要干过写PPT的!
  5. cs精英游戏python代码_python面向对象-cs游戏示例
  6. 清华裴丹:AIOps落地路线图
  7. 数据卡片_手把手教你构建企业实时数据大屏
  8. Docker的网络配置:创建网桥
  9. Spring-AbstractRefreshableApplicationContext
  10. 服务器打完补丁无法进入系统,win7系统电脑更新补丁后无法进入系统怎么办
  11. 终于找到YST的BLOG了!!!!
  12. Unity3D坦克大战游戏开发——学习笔记(中)
  13. 服务器磁盘IO是什么意思?SATA和固态硬盘的性能差异
  14. 甲骨文数据库购买的价格(二)
  15. PTA评测系统的常见问题
  16. static struct、typedef struct
  17. 用matlab解出冲激响应的表达式,Matlab实验指导书
  18. 交换机直连电脑配置telnet
  19. ubuntu 16.04 编译安装 amule (开启GUI)
  20. librosa--学习笔记(2)(频谱特性 Spectral representations)

热门文章

  1. vue element menu侧边导航栏 数据渲染
  2. vue 指令 v-on
  3. sqlalchemy与mysql映射
  4. SQLAlchemy Mapping Class Inheritance Hierarchies
  5. javascript window.navigator
  6. python FIFO命名管道
  7. MySQL Mathematical Functions(数学方法)
  8. opencv-api pyrDown
  9. java删除文件的上一级_java中多级目录的删除
  10. Java多线程学习总结(4)——ThreadPoolExecutor 线程池的拒绝策略学习总结