首页上一页 1 下一页尾页 2 条记录 1/1页
thinkphp中join用法
发表在PHP图书答疑
2018-01-26
《零基础学PHP》第15 章 ThinkPHP 框架
是否精华
是
否
版块置顶:
是
否
thinkphp中连贯操作join,在书上没有详细的介绍。怎么用join对于初学者而言还比较困惑。
在thinkphp网站上找了一圈没有很好的答案。下面来介绍一下join的用法,帮助大家学习。
JOIN方法也是连贯操作方法之一,用于根据两个或多个表中的列之间的关系,从这些表中查询数据。
附上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方法可以支持以上四种类型,例如:
$Model = M('Artist');
$Model->join('think_work ON think_artist.id = think_work.artist_id') ->join('think_card ON think_artist.card_id = think_card.id') ->select(); join方法支持多次调用,但指定的数据表必须是全称,但我们可以这样来定义: $Model->join('__WORK__ ON __ARTIST__.id = __WORK__.artist_id') ->join('__CARD__ ON __ARTIST__.card_id = __CARD__.id') ->select(); __WORK__和 __CARD__在最终解析的时候会转换为 think_work和 think_card。 如果join方法的参数用数组的话,只能使用一次join方法,并且不能和字符串方式混合使用。 例如: join(array(' __WORK__ ON __ARTIST__.id = __WORK__.artist_id', '__CARD__ ON __ARTIST__.card_id = __CARD__.id')) 使用数组方式的情况下,第二个参数无效。因此必须在字符串中显式定义join类型,例如: join(array(' LEFT JOIN __WORK__ ON __ARTIST__.id = __WORK__.artist_id', 'RIGHT JOIN __CARD__ ON __ARTIST__.card_id = __CARD__.id'))
于2018-01-26 21:24:14编辑