yii2的多表查询

使用 leftjoin方法 多表查询带分页

这里是三表查询的都是同一张表、 如果是不同表就把

 ->leftJoin

  里的

Area::tableName()

换成自己业务需求的表
 1 $query = Area::find()->andWhere([‘a.is_delete‘=>0,‘a.level‘=>4,‘a.is_open‘=>1]);
 2
 3 $query->select(‘a.name,a.id,a.parent_id,c.name AS city_name,c.parent_id,b.name AS province_name,‘)
 4 ->alias(‘a‘)
 5 ->andWhere([‘c.level‘=>3,‘c.is_open‘=>1,‘c.is_delete‘=>0])
 6 ->leftJoin([‘c‘=>Area::tableName()],‘c.id=a.parent_id‘)
 7 ->andWhere([‘b.level‘=>2,‘b.is_open‘=>1,‘b.is_delete‘=>0])
 8 ->leftJoin([‘b‘=>Area::tableName()],‘b.id=c.parent_id‘);
 9 if ($citys) {
10 $query->andWhere([‘c.id‘=>$citys]);
11 }
12
13 if ($provinces) {   // 这个是搜索的条件   当搜索提交数据过来是  加上where
14 $query->andWhere([‘b.id‘=>$provinces]);
15 }
16
17 $count = $query->count();
18 $p = new Pagination([‘totalCount‘=>$count,‘pageSize‘=>10]);  // 一页显示10条数据
19
20 $list = $query->offset($p->offset)
21 ->limit($p->limit)
22 ->asArray()  // 转成 数组形式  ,不加的话就是以对象的形式返回
23 ->all();
24
25 return [$list,$p];  // list 数据 p 分页

//  因为是多个条件 查询 所以 所以要用  andWhere  而不是 where

时间: 2024-10-29 05:16:17

yii2的多表查询的相关文章

yii2:多表查询

啥都不说了,上代码: $list = static::find() ->leftJoin('book', 'book.RID = prices.RID')->select('prices.*,book.WCONTENT,book.WIMGURL,book.WURL') ->andFilterWhere(['prices.WMODEL'=> $where_condition['WMODEL']]) ->andFilterWhere(['prices.WTYPE'=> $w

Yii2中多表关联查询(join、joinwith) with是不执行sql的

Yii2中多表关联查询(join.joinwith) 我们用实例来说明这一部分 表结构 现在有客户表.订单表.图书表.作者表, 客户表Customer (id customer_name) 订单表Order (id order_name customer_id book_id) 图书表 (id book_name author_id) 作者表 (id author_name) 模型定义 下面是这4个个模型的定义,只写出其中的关联 Customer class Customer extends \

Yii2中多表关联查询(join、joinwith)

我们用实例来说明这一部分 表结构 现在有客户表.订单表.图书表.作者表, 客户表Customer   (id  customer_name) 订单表Order          (id  order_name       customer_id   book_id) 图书表                    (id  book_name       author_id) 作者表                    (id  author_name) 模型定义 下面是这4个个模型的定义,只写

Yii2.0中文开发向导——Yii2中多表关联查询(join、joinwith)(转)

我们用实例来说明这一部分 表结构 现在有客户表.订单表.图书表.作者表, 客户表Customer   (id  customer_name) 订单表Order          (id  order_name       customer_id   book_id) 图书表                    (id  book_name       author_id) 作者表                    (id  author_name) 模型定义 下面是这4个个模型的定义,只写

Yii2 联表查询数据丢失,即出现主键覆盖情况的解决方法

前段时间做项目,遇到一个问题,用yii2的AR连表查询数据的时候,理应该查出来更多的数据,但是实际得到的只有部分数据: 例如,有这么一个查询: $query = OperaHotelRoom::find() ->select(['a.ID','a.ROOM_NAME','a.PARENT_ROOM_TYPE']) ->joinWith('runHotel b') ->from('opera_hotel_room a') ->where(['a.HOTEL_ID' => 197

yii2 ActiveRecord多表关联以及多表关联搜索的实现

一个老生常谈的问题.最近通过群里的反馈,觉得很多人还是没有去理解这个问题.今天把这个问题讲明白了,看看yii2 ActiveRecord是怎么个多表关联以及如何去优化这个关联. 场景需求: 假设我们有一张用户表user和一张用户渠道表auth,两张数据表通过user.id和auth.uid进行一对一关联.现需要在user列表展示auth表的来源渠道source,且该渠道可搜索. 首先我们先通过gii生成user和auth系列相关的model和操作.此处不做详细说明,有关gii的操作可参考gii详

Mysql数据库理论基础之五--SELECT单多表查询、子查询、别名

一.简介 由MySQL AB公司开发,是最流行的开放源码SQL数据库管理系统,主要特点: 1.是一种数据库管理系统 2.是一种关联数据库管理系统 3.是一种开放源码软件,且有大量可用的共享MySQL软件 4.MySQL数据库服务器具有快速.可靠和易于使用的特点 5.MySQL服务器工作在客户端/服务器模式下,或嵌入式系统中 InnoDB存储引擎将InnoDB表保存在一个表空间内,该表空间可由数个文件创建.这样,表的大小就能超过单独文件的最大容量.表空间可包括原始磁盘分区,从而使得很大的表成为可能

web day16 数据库 完整性约束,mySQL编码问题,备份与恢复,多表查询

约束 * 约束是添加在列上的,用来约束列的! 1. 主键约束(唯一标识) ****非空*** ****唯一*** ****被引用**** * 当表的某一列被指定为主键后,该列就不能为空,不能有重复值出现. * 创建表时指定主键的两种方式: > CREATE TABLE stu( sid      CHAR(6) PRIMARY KEY, sname     VARCHAR(20), age         INT, gender     VARCHAR(10) ); 指定sid列为主键列,即为s

python3 mysql 多表查询

python3 mysql 多表查询 一.准备表 创建二张表: company.employee company.department #建表 create table department( id int, name varchar(20) ); create table employee( id int primary key auto_increment, name varchar(20), sex enum('male','female') not null default 'male'