orderBy('order')->get(); $gammebanner = BasicBanner::where('slug', 'main_gammebanner')->first(); $gammehook = GammeHook::where('slug', 'gamme_hook')->first(); $sousGammes = Gamme::whereNotNull('parent_gamme_id')->orderBy('parent_gamme_id')->get(); return view('front.gammes.index', compact('gammes', 'gammebanner', 'gammehook', 'sousGammes')); } /** * Show a specific gamme. * * @param Gamme $gamme * @return \Illuminate\Contracts\View\View */ public function show(Gamme $gamme): \Illuminate\Contracts\View\View { $gammes = collect([]); $dbGammes = Gamme::where('id', $gamme->id) ->with('childGammes')->get(); $parent_gamme = Gamme::whereNull('parent_gamme_id')->orderBy('order')->get(); /** @var \App\Models\Gamme $dbGamme */ foreach ($dbGammes as $dbGamme) { $gammes->push($dbGamme->id); $dbGamme->childGammes->sortBy('order') ->map(function (Gamme $childGamme) use (&$gammes): void { $gammes->push($childGamme->id); }); } $products = Product::whereIn('gamme_id', $gammes) ->orderBy('order') ->get(); return view('front.gammes.show', compact('gamme', 'products', 'parent_gamme')); } }