alias('g') ->leftJoin(['gh' => GoodsHub::tableName()], 'gh.id=g.goods_hub_id') ->leftJoin(['img' => IntegralMallGoods::tableName()], 'img.goods_id=g.id') ->leftJoin(['gc' => $cat_query], 'gc.goods_hub_id=gh.id'); return $query; } protected function handleList($list) { foreach ($list as $index => $item) { if (isset($item['status'])) { $item['status_cn'] = $item['status'] == Goods::STATUS_ONLINE ? '已上架' : '已下架'; } $item['created_at_cn'] = date('Y-m-d H:i:s', $item['created_at']); if (isset($item['goods_hub_id'])) { $item['cat_list'] = $this->getCatList($item['goods_hub_id']); } $item['cover_pic'] = SiteHelper::getFullUrl($item['cover_pic']); if ($this->scenario == 'detail') { // $item['detail'] = SiteHelper::repairContent($item['detail']); // $item['pic_urls'] = $this->fixPicUrls($item['pic_urls']); // $item['video_url'] = SiteHelper::getFullUrl($item['video_url']); // $item['goods_sales'] = $item['virtaul_sales'] + $item['sales']; $item['attr_groups'] = empty($item['attr_groups']) ? [] : json_decode($item['attr_groups'], true); $attr = $this->getAttr($item['id']); $attr = array_column($attr, 'price', 'sign_id'); if (is_array($item['attr_groups'])) { foreach ($item['attr_groups'] as $key => $value) { // unset($value['attr_group_name']); unset($value['attr_group_id']); foreach ($value['attr_list'] as $key1 => $value1) { $value['attr_list'][$key1]['price'] = $attr[$value1['attr_id']]; } $item['attr_groups'][$key] = $value; } } } $list[$index] = $item; } return $list; } //获取商品规格 private function getAttr($goods_id) { $attr = GoodsAttr::find()->alias('gr') ->where([ 'gr.goods_id' => $goods_id, 'gr.is_delete' => 0, ]) ->select('gr.id,gr.goods_id,gr.price,gr.sign_id') ->asArray()->all(); return $attr; } }