一般情况下,都是一个数据库中查询的,这样的情况下默认使用的都是
相同的表前缀,比如(shop_)
,所以在使用
数据库模型
关联查询时往往都是这样写的:
Order::alias('o')
->join('user 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官方手册。