多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# JOIN [上一页](# "上一页")[下一页](# "下一页") JOIN方法也是连贯操作方法之一,用于根据两个或多个表中的列之间的关系,从这些表中查询数据。 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`。 默认采用INNER JOIN 方式,如果需要用其他的JOIN方式,可以改成 ~~~ $Model->join('RIGHT JOIN __WORK__ ON __ARTIST__.id = __WORK__.artist_id')->select(); ~~~ 或者使用: ~~~ $Model->join('__WORK__ ON __artist__.id = __WORK__.artist_id','RIGHT')->select(); ~~~ > join方法的第二个参数支持的类型包括:INNER LEFT RIGHT FULL。 如果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')) ~~~ [上一页](# "上一页")[下一页](# "下一页")