goods)) { $goodsSpecs = GoodsSpec::select('id','title','goods_id')->where('goods_id', $this->goods->id) ->with(['hasManySpecsItem' => function($item) { return $item->select('id','specid','title','show')->orderBy('display_order', 'asc'); }])->orderBy('display_order', 'asc')->get(); $spec_title_key = []; $spec_item_title_arr = []; if (!$goodsSpecs->isEmpty()) { foreach ($goodsSpecs as $spec) { $temporary = $spec->getAttributes(); $temporary['spec_item'] = $spec->hasManySpecsItem->toArray(); $specs[] = $temporary; $spec_item_title_arr = $spec_item_title_arr + array_column($temporary['spec_item'],'title','id'); $spec_title_key[$temporary['title']] = array_column($temporary['spec_item'],'id'); } } $option = GoodsOption::where('goods_id', $this->goods->id)->orderBy('display_order', 'asc')->get()->toArray(); foreach ($option as $key=>$item) { if ($item['thumb']) { $option[$key]['thumb'] = yz_tomedia($item['thumb']); } //这里那id做判断,名称可能会重复 $spec_item_ids = explode('_',$item['specs']); foreach ($spec_item_ids as $title_key => $spec_item_id) { $spec_title_array = array_filter($spec_title_key, function ($title_key) use ($spec_item_id) { return in_array($spec_item_id, $title_key); }); $title_key_first = array_key_first($spec_title_array); if ($title_key_first) { $option[$key][$title_key_first] = $spec_item_title_arr[$spec_item_id]; } } } } return [ 'has_option'=> is_null($this->goods)?0:$this->goods->has_option, 'specs'=> $specs, 'option'=>$option ]; } public function pagePath() { return $this->getPath('resources/views/goods/assets/js/components/'); } }