关于ThinkPHP的关联查询,官方文档是这样描述的:上面的join函数需要三个参数,分别是:要关联的(完整)表名和别名join,支持三种写法:写法一:['全表名或子查询'=>'别名']写法二:'完整表名别名'写法三:'表名不带数据表前缀'条件关联条件,可以是字符串也可以是数组,当是数组时,每个元素就是一个关联条件。type关联类型,可以是:INNER、LEFT、RIGHT、FULL,不区分大小写,默认为INNER。一般在同一个数据库中查询不同的前缀。这种情况默认使用同一个表前缀,比如(shop_),所以在使用数据库模型关联查询时,往往这样写:Order::alias('o')->join('用户u','o.user_id=u.id')->select();上述代码中,由于使用模型查询,默认会加上表前缀,两个表的全表名分别为shop_order和shop_user,关联类型默认为INNER关联。但是这时候,如果关联了不同前缀的表(比如:pay_record),上面的查询语句显然就不行了。这时需要对关联语句稍作修改。修改后的代码如下:Order::alias('o')->join(['pay_record'=>'r'],'o.pay_id=r.id')->select();这样就可以利用模型关联不同前缀的表进行查询。综上所述,上述方法其实就是将join函数中的join参数从字符串变成数组;ThinkPHP是一个优秀的开发框架,上面的连接方式只是其中的一种。更多方法可以参考官方手册:ThinkPHP官方手册。
