select()->toArray(); if (empty($lists)) { return []; } // 提取有参与活动的商品ids $goodsIds = array_column($lists, 'goods_id'); $goodsIds = array_unique($goodsIds); // 生成初始化数据 $data = []; foreach ($goodsIds as $goodsId) { $data[$goodsId] = []; foreach (ActivityEnum::TYPE as $type) { $data[$goodsId][$type]['type'] = $type; $data[$goodsId][$type]['activity_id'] = null; $data[$goodsId][$type]['item_id'] = []; } } // 填充活动信息 foreach ($lists as $item) { $data[$item['goods_id']][$item['activity_type']]['activity_id'] = $item['activity_id']; $data[$item['goods_id']][$item['activity_type']]['item_id'][] = $item['item_id']; } // 去除没有活动信息的初始数据 foreach($data as $key => $item) { foreach (ActivityEnum::TYPE as $type) { if (is_null($item[$type]['activity_id'])) { unset($data[$key][$type]); } } if (empty($data[$key])) { unset($data[$key]); } } return $data; } static function goodsActivityInfo($goods_id) : array { $info = GoodsActivity::where('goods_id', $goods_id)->append([ 'activity_text' ])->findOrEmpty()->toArray(); return $info; } }