美文网首页PHP 小秀一下
ThinkPHP 的join关联查询不使用默认的表前缀

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

作者: 老夫不正经 | 来源:发表于2020-10-09 10:10 被阅读0次

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


ThinkPHP 关联查询

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

相关文章

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

    关于ThinkPHP 的关联查询,官方文档是这样描述的: 上述join函数中需要三个参数,分别是: join 要关...

  • MySQL中的join以及on条件的用法

    join 经常用来做关联查询,可以把两张或者多张表用通过关联条件关联起来做数据查询在使用join查询的时候要区分主...

  • 如何在EF中实现left join(左联接)查询

    在EF中,当在dbset使用join关联多表查询时,连接查询的表如果没有建立相应的外键关系时,EF生成的SQL语句...

  • Mysql学习6——连表查询

    连表查询:Join连接(默认为内部链接:INNER JOIN) 基本语句: 直接全部查询 从上面的返回结果看出,返...

  • SQL语法纠正

    执行顺序①from查询表②join关联表③on字段条件④where字段条件⑤group by分组字段⑥having...

  • 关联关系查询(第一讲)

    关联查询 当查询内容涉及到具有关联关系的多个表时,就需要使用关联查询。根据表与表之间的关联关系的不同,关联查询分为...

  • 连接查询;外键

    连接查询 连接查询(join)分类:内连接、外连接、自然连接、交叉连接 使用方式:左表 join 右表 交叉连接(...

  • 连接查询;外键

    连接查询 连接查询(join)分类:内连接、外连接、自然连接、交叉连接 使用方式:左表 join 右表 交叉连接(...

  • mysql中的left join、right join、join

    sql准备 各种join的使用 left join 即为以sql语句中的左边的表为主要表关联右边的表,其中使用on...

  • 2019-11-27_关联查询

    1.左关联 a left join b on a.c = b.c left join 已a为基准,查询出a表中的所...

网友评论

    本文标题:ThinkPHP 的join关联查询不使用默认的表前缀

    本文链接:https://www.haomeiwen.com/subject/tqokpktx.html