public function compare(Request $request) { $view = 'front.pages.product-action.compare'; $cookie_compare = $request->cookie('compare'); if(isset($cookie_compare)) { $compare_id = CompareId::where('id', $cookie_compare)->first(); if (isset($compare_id)) { $compare_list = Compare::where('compare_id', $compare_id->id) ->orderBy('id', 'desc') ->get(); $goods_id = $compare_list->pluck('goods_item_id')->toArray(); $goods_subj = GoodsItemId::active() ->notDeleted() ->whereIn('id',$goods_id) ->grourBy('goods_subject_id') ->pluck('goods_subject_id') ->toArray(); if($goods_subj) { $goods_subject_id = $goods_subj[0]; if ($request->subj) { $goods_subject_current = GoodsSubjectId::active() ->notDeleted() ->where('alias', $request->subj) ->first(); if ($goods_subject_current && in_array($goods_subject_current->id, $goods_subj)) { $goods_subject_id = $goods_subject_current->id; } } $goods_items = GoodsItemId::active() ->notDeleted() ->itemByLang() ->with('oImage') ->with('getSubjectId') ->whereIn('id',$goods_id) ->where('goods_subject_id', $goods_subject_id) ->get(); } $subject_with_goods = []; $params_with_subjects = []; $subjects_id = $goods_items->pluck('goods_subject_id')->toArray(); $main_catalogs_id = app('main_catalogs_id'); $all_parent_subjects = []; foreach ($goods_items as $goods_item) { $subject_with_goods[$goods_item->goods_subject_id][] = $goods_item; } getFinalSubjects($main_catalogs_id,$subjects_id,$all_parent_subjects); if(!empty($all_parent_subjects)) { $parameters = GoodsParametrId::active() ->notDeleted() ->whereIn('goods_subject_id', $all_parent_subjects) ->itemByLang() ->has('GoodsParamsItemId') ->has('GoodsParamsItemId.GoodsItemId') ->with('GoodsParamsItemId','GoodsParamsItemId.GoodsItemId') ->orderBy('position', 'asc') ->get()->keyBy('id'); foreach ($parameters as $id=>$param) { foreach ($param->GoodsParamsItemId as $param_item) { foreach ($param_item->GoodsItemId as $goods_param) { $params_with_subjects[$goods_param->goods_subject_id][$id] = $param; } } } $parameters_id = $parameters->pluck('id')->toArray(); $parameters_value = []; //Get parameter values $values = GoodsParametrValueId::active() ->select('*','goods_parametr_item_id.goods_item_id as goods_item_id') ->join('goods_parametr_item_rsc','goods_parametr_item_rsc.goods_parametr_value_id','=','goods_parametr_value_id.id') ->join('goods_parametr_item_id','goods_parametr_item_id.id','=','goods_parametr_item_rsc.goods_parametr_item_id') ->whereIn('goods_parametr_value_id.goods_parametr_id', $parameters_id) ->whereRaw('goods_parametr_value_id.id IN (SELECT DISTINCT goods_parametr_value_id FROM goods_parametr_item_rsc WHERE goods_parametr_item_id IN (SELECT id FROM goods_parametr_item_id WHERE goods_item_id IN (?)))', implode(',',$goods_items->pluck('id')->toArray())) ->itemByLang() ->get(); foreach ($parameters as $parameter) { foreach ($values as $value) { if($parameter->id == $value->goods_parametr_id) $parameters_value[$parameter->id][$value->goods_item_id] = $value; } } } } dd($parameters_value); } $meta = collect([]); $meta->meta_static = 'Compare' . ' - ' . env('APP_NAME') ?? env('APP_NAME'); return view($view, get_defined_vars()); } /*my compare*/ public function compare(Request $request) { $view = 'front.pages.product-action.compare'; $cookie_compare = $request->cookie('compare'); if(isset($cookie_compare)) { $compare_id = CompareId::where('id', $cookie_compare)->first(); if (isset($compare_id)) { $compare_list = Compare::where('compare_id', $compare_id->id) ->orderBy('id', 'desc') ->get(); $goods_id = $compare_list->pluck('goods_item_id')->toArray(); $goods_items = GoodsItemId::active() ->notDeleted() ->itemByLang() ->with('oImage') ->with('getSubjectId') ->whereIn('id',$goods_id) ->get(); $subject_with_goods = []; $params_with_subjects = []; $subjects_id = $goods_items->pluck('goods_subject_id')->toArray(); $main_catalogs_id = app('main_catalogs_id'); $all_parent_subjects = []; foreach ($goods_items as $goods_item) { $subject_with_goods[$goods_item->goods_subject_id][] = $goods_item; } getFinalSubjects($main_catalogs_id,$subjects_id,$all_parent_subjects); if(!empty($all_parent_subjects)) { $parameters = GoodsParametrId::active() ->notDeleted() ->whereIn('goods_subject_id', $all_parent_subjects) ->itemByLang() ->has('GoodsParamsItemId') ->has('GoodsParamsItemId.GoodsItemId') ->with('GoodsParamsItemId','GoodsParamsItemId.GoodsItemId') ->orderBy('position', 'asc') ->get()->keyBy('id'); foreach ($parameters as $id=>$param) { foreach ($param->GoodsParamsItemId as $param_item) { foreach ($param_item->GoodsItemId as $goods_param) { $params_with_subjects[$goods_param->goods_subject_id][$id] = $param; } } } $parameters_id = $parameters->pluck('id')->toArray(); $parameters_value = []; //Get parameter values $values = GoodsParametrValueId::active() ->select('*','goods_parametr_item_id.goods_item_id as goods_item_id') ->join('goods_parametr_item_rsc','goods_parametr_item_rsc.goods_parametr_value_id','=','goods_parametr_value_id.id') ->join('goods_parametr_item_id','goods_parametr_item_id.id','=','goods_parametr_item_rsc.goods_parametr_item_id') ->whereIn('goods_parametr_value_id.goods_parametr_id', $parameters_id) ->whereRaw('goods_parametr_value_id.id IN (SELECT DISTINCT goods_parametr_value_id FROM goods_parametr_item_rsc WHERE goods_parametr_item_id IN (SELECT id FROM goods_parametr_item_id WHERE goods_item_id IN (?)))', implode(',',$goods_items->pluck('id')->toArray())) ->itemByLang() ->get(); foreach ($parameters as $parameter) { foreach ($values as $value) { if($parameter->id == $value->goods_parametr_id) $parameters_value[$parameter->id][$value->goods_item_id] = $value; } } } } dd($parameters_value); } $meta = collect([]); $meta->meta_static = 'Compare' . ' - ' . env('APP_NAME') ?? env('APP_NAME'); return view($view, get_defined_vars()); }