ThinkPHP的join方法

两张表:

表一:pre_company_member   关联字段:comp_id

表二:pre_company   关联字段:comp_id

查询这两表中的数据。

方法一:驼峰法

$member=M('CompanyMember');

$member_info=$member->join('pre_company ON pre_company_member.comp_id=pre_company.comp_id')->where(array('pre_company_member.uid'=>array('eq',session('uid'))))->selsect();

方法二:别名法

$member=M();

$member_info=$member->table('pre_company_member m')->join('pre_company c ON m.comp_id=c.comp_id')->where(array('m.uid'=>array('eq',session('uid'))))->selsect();

注意:

默认采用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/sweet521/p/5621261.html