['name'], '=' => ['level'], ]; } public function lists(): array { $lists = GoodsCategory::where($this->searchWhere) ->limit($this->limitOffset, $this->limitLength) ->order('id', 'asc') ->column('id,name,image,level,0 as num','id'); $categoryIds = array_keys($lists); if($categoryIds){ $categoryCountLists = Goods::alias('G') ->join('goods_category_index GCI','G.id = GCI.goods_id') ->where(['GCI.category_id'=>$categoryIds]) ->group('GCI.category_id') ->column('count(goods_id) as num,GCI.category_id'); foreach ($categoryCountLists as $countList){ if(isset($lists[$countList['category_id']])){ $lists[$countList['category_id']]['num'] = $countList['num']; } } } return array_values($lists); } public function count(): int { $count = GoodsCategory::where($this->searchWhere) ->count(); return $count; } }