举杯邀月

Yii2数据库查询进阶操作(一)leftJoin 连表查询

摘要:数据库查询操作在工作中是最常见的,我们需要把数据库的数据根据需要的条件查询出来进行渲染页面或者接口返回。复杂的数据库设计中关联表是经常会存在,那么如何进行数据的连表查询呢?

数据库查询操作在工作中是最常见的,我们需要把数据库的数据根据需要的条件查询出来进行渲染页面或者接口返回。复杂的数据库设计中关联表是经常会存在,那么如何进行数据的连表查询呢?

在关联查询中最常用的就是 leftJoin 连表操作了,这是左链接操作,关于左连接的概念,我们这里先做一下简要说明:

sql中的连接查询有 inner join(内连接)、left join(左连接)、right join(右连接)等几种方式,它们之间其实并没有太大区别,仅仅是查询出来的结果有所不同。

  • inner join(内连接),在两张表进行连接查询时,只保留两张表中完全匹配的结果集。
  • left join,在两张表进行连接查询时,会返回左表所有的行,即使在右表中没有匹配的记录。
  • right join,在两张表进行连接查询时,会返回右表所有的行,即使在左表中没有匹配的记录。
    在yii2中这些链接也是全部支持的:
Table1::find()
    ->alias('a')
    ->leftJoin(Table2::tableName().' b', 'a.id = b.id')
    ->leftJoin(Table3::tableName().' c', 'a.id = c.id')
    ->select('a.id, b.name, c.age')
    ->asArray()->all();
1
2
3
4
5
6
1
2
3
4
5
6

这就是一个简单的左连接的查询操作,生成的sql将会是:

SELECT a.id, b.name, c.age FROM table1 as a LEFT JOIN table2 as b ON a.id = b.id LEFT JOIN table3 as c ON a.id = c.id
1
1

其实根据yii的连贯操作,这个还是很容易看懂的。

以上说到的三种链接查询的方式也都支持,分别对应 leftJoin rightJoin innerJoin;

作者:举杯邀月

出处: http://www.hug-code.cn/archives/5fca072c8530a.html

2020-09-25 标签: yii2