php里边的join,thinkphp中join用法

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();

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'))

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值