orderBy('produit')->orderBy('qualite')->orderBy('recolte') $cotations = CotationsData::select('produit','qualite','recolte', DB::raw("GROUP_CONCAT(echeance,'::',prix SEPARATOR '|@|') AS prices")) ->groupBy('produit') ->groupBy('qualite') ->groupBy('recolte') ->get(); $formEnums = $this->getObjectivesFromEnums(); return view('pro.dashboard.index',compact('cotations','formEnums')); } private function getObjectivesFromEnums() { $enums = array(); $produitEnum = CotationsData::select('produit AS value')->distinct()->get(); $enums['produit'] = $produitEnum; $qualiteEnum = array(); foreach ($produitEnum as $produit) { $qualiteEnum[$produit->value] = CotationsData::select('qualite AS value')->distinct()->where('produit',$produit->value)->get(); } $enums['qualite'] = $qualiteEnum; $campagneEnum = array(); foreach ($produitEnum as $produit) { $campagneEnum[$produit->value] = CotationsData::select('recolte AS value')->distinct()->where('produit',$produit->value)->get(); } $enums['campagne'] = $campagneEnum; $echeanceEnum = array(); foreach ($produitEnum as $produit) { foreach($campagneEnum[$produit->value] as $campagne) { $echeanceEnum[$produit->value][$campagne->value] = CotationsData::select('echeance AS value')->distinct() ->where('produit',$produit->value) ->where('recolte',$campagne->value) ->whereNotNull('prix') ->get(); } } $enums['echeance'] = $echeanceEnum; return $enums; } }