hasOne(GroupEquity::class, 'id', 'equity_id') ->field('id,equity_id'); } public static function getDetail($id) { $detail = GroupActivity::alias('a')->leftJoin('group_activity_category b','a.group_category_id=b.id') ->where('a.id',$id) ->field('a.id,a.title,a.image,a.equity_id,a.origin_price,a.price,a.work_amount,a.group_category_id,b.property_head_id,b.start_time,b.end_time,b.service_time,b.area,b.participant_num,b.form_time_limit,b.is_simulate_form,b.simulate_num,b.type') ->findOrEmpty() ->toArray(); if(!empty($detail)){ $detail['start_time'] = date('Y-m-d H:i:s',$detail['start_time']); $detail['service_time'] = date('Y-m-d',$detail['service_time']); $detail['area'] = explode(",",$detail['area']); $detail['price'] = explode(",",$detail['price']); $detail['participant_num'] = explode(",",$detail['participant_num']); } return $detail; } public static function getActivityList($catetory_id,$block_key = ''){ $where['group_category_id'] = $catetory_id; if ($block_key) { $where['block_key'] = $block_key; } $detail = GroupActivityCategory::where('id',$catetory_id) ->field('id,title,images,start_time,end_time,service_time,area,participant_num,form_time_limit,is_simulate_form,simulate_num,type,block_data') ->findOrEmpty() ->toArray(); $category = [ 'id' => $detail['id'], 'title' => $detail['title'], 'images' => explode(",",$detail['images']), 'block_data' => json_decode($detail['block_data'],true), ]; unset($detail['block_data']); $detail = array_diff_key($detail,$category); $detail['area'] = explode(",",$detail['area']); $detail['participant_num'] = explode(",",$detail['participant_num']); $activity = GroupActivity::where($where) ->field('id,title,image,equity_id,block_key,origin_price,price,work_amount') ->select() ->toArray(); $list = []; foreach($activity as $item) { $item['price'] = explode(",",$item['price']); $item = array_merge($item,$detail); $list[$item['block_key']]['block_key'] = $item['block_key']; $list[$item['block_key']]['activity'][] = $item; } $block_data = []; foreach($category['block_data'] as $key => $item) { if (isset($list[$item['block_key']])) { $item['activity'] = $list[$item['block_key']]['activity']; $tmpKey = empty($item['sort']) ? '0_'.$key : $item['sort']."_".$key; $block_data[$tmpKey] = $item; } if ($block_key && $item['block_key'] == $block_key) { return $item; } } krsort($block_data); $category['block_data'] = array_values($block_data); return $category; } }