189 8069 5689

ThinkPHP中join关联查询如何不使用默认的表前缀

小编给大家分享一下ThinkPHP中join关联查询如何不使用默认的表前缀,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

创新互联公司是一家专业提供铜梁企业网站建设,专注与成都网站建设、成都做网站H5页面制作、小程序制作等业务。10年已为铜梁众多企业、政府机构等服务。创新互联专业的建站公司优惠进行中。

php有什么特点

1、执行速度快。2、具有很好的开放性和可扩展性。3、PHP支持多种主流与非主流的数据库。4、面向对象编程:PHP提供了类和对象。5、版本更新速度快。6、具有丰富的功能。7、可伸缩性。8、功能全面,包括图形处理、编码与解码、压缩文件处理、xml解析等。

上述join函数中需要三个参数,分别是:

join

要关联的(完整)表名以及别名,支持三种写法:

写法1:[ '完整表名或者子查询'=>'别名' ]
写法2:'完整表名 别名'
写法3:'不带数据表前缀的表名'
condition
关联条件,可以为字符串或数组, 为数组时每一个元素都是一个关联条件。
type
关联类型,可以为: INNER、LEFT、RIGHT、FULL,不区分大小写,默认为INNER。

不同前缀

一般情况下,都是一个数据库中查询的,这样的情况下默认使用的都是相同的表前缀,比如(shop_),所以在使用数据库模型关联查询时往往都是这样写的:

Order::alias('o')
     ->join('user u', 'o.user_id = u.id')
     ->select();

在以上代码中,因为是使用模型查询,所以默认都会加上表前缀,两张表的完整表名就是shop_ordershop_user,而关联类型则默认为INNER关联。

但这时如果关联了一张不同前缀的表(比如:pay_record),上述的查询语句显然就行不通了,这时就需要在关联语句处稍作修改,修改后的代码如下:

Order::alias('o')
     ->join(['pay_record' => 'r'], 'o.pay_id = r.id')
     ->select();

这样便能使用模型关联不同前缀的表进行查询了。

总结

上述的方式其实也就是把join函数中的join参数由字符串修改为数组;ThinkPHP是一个很优秀的开发框架,上述的关联方式也只是其中一种。

以上是“ThinkPHP中join关联查询如何不使用默认的表前缀”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!


标题名称:ThinkPHP中join关联查询如何不使用默认的表前缀
当前地址:http://jkwzsj.com/article/jjojco.html

其他资讯