关于ThinkPHP的join关联查询不使用默认的表前缀

下面给大家介绍thinkphpjoin关联查询不使用默认的表前缀,希望对需要的朋友有所帮助!

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

关于ThinkPHP 的关联查询,官方文档是这样描述的:

 

关于ThinkPHP的join关联查询不使用默认的表前缀插图

 

上述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官方手册。

 

1. 本站所有资源来源于用户上传和网络,因此不包含技术服务请大家谅解!
2.本站部分资源包有加密,加密统一密码为:www.51zhanma.cn
3. 本站不保证所提供下载的资源的准确性、安全性和完整性,资源仅供下载学习之用!如有链接无法下载、失效或广告,请联系客服处理!
4. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!
5. 如果您也有好的资源或教程,您可以投稿发布,用户购买后有销售金额的80%以上的分成收入!
6.如有侵权请联系客服邮件kefu@zhanma.cn
站码网 » 关于ThinkPHP的join关联查询不使用默认的表前缀

发表评论

  • 1808本站运营(天)
  • 1943会员数(个)
  • 5310资源数(个)
  • 1287评论数(个)
  • 0 近 30 天更新(个)
加入 VIP