美文网首页
thinkphp中join用法

thinkphp中join用法

作者: jianghu000 | 来源:发表于2017-09-08 15:52 被阅读0次

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

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

 $data = M("groups g")
    ->field('g.id,g.group_name,e.uid')
    ->join('left join equipment e ON g.group_name = e.group_name')
    ->where(array('g.user_id' => '1'))
    ->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();

WORKCARD在最终解析的时候会转换为 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'))

相关文章

  • thinkphp中join用法

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

  • ThinkPHP 的join关联查询不使用默认的表前缀

    关于ThinkPHP 的关联查询,官方文档是这样描述的: 上述join函数中需要三个参数,分别是: join 要关...

  • join的4种情况及人民币金额小写转大写的函数

    不同的sql join用法: JOIN: 如果表中有至少一个匹配,则返回行。 LEFT JOIN: 即使右表中没有...

  • 【原创】JOIN 详述(上)

    几种常见 join 的用法 创建表 插入数据 INNER JOIN select * from join_user...

  • hive常用 select (查询)语法

    inner join 用法,求交集

  • sql中join的用法

    SQL JOIN 子句用于把来自两个或多个表的行结合起来,基于这些表之间的共同字段。 最常见的 JOIN 类型:S...

  • join用法

    join的作用 join可以让线程排队执行,而join的内部采用wait方法来实现等待。而join的作用是等待线程...

  • thinkPHP中in标签的用法

    项目中经常会用到if标签判断条件,但这次需要用到in标签来判断变量是否在某个数组范围内 这里用到了两个标签,一个是...

  • thinkPHP中create的用法

    一般情况下,对于刚开始学的小白来说,向数据库添加数据我们都会用一种中规中矩的方法: 就是通过$_POST去获取每一...

  • left join的用法

    在讲left join(左关联)之前,要说下right join(右关联)的用法其实类似left join,把ri...

网友评论

      本文标题:thinkphp中join用法

      本文链接:https://www.haomeiwen.com/subject/haagjxtx.html