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   

转载于:https://www.cnblogs.com/mango-zb/p/7040154.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值