首页 > 代码库 > yii2的多表查询
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
yii2的多表查询
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。