search_range; $search_cooking_time = $request->search_cooking_time; $search_preparation_time = $request->search_preparation_time; $ranges = Range::all(); $query = Advice::where('type', 1)->where('status', true) ->when(is_numeric($search_range), function ($query) use ($search_range) { $query->whereHas('products', function ($query) use ($search_range) { $query->whereHas('subrange', function ($query) use ($search_range) { $query->whereHas('range', function ($query) use ($search_range) { $query->where('id', 'LIKE', $search_range); }); }); }); }) ->when(is_numeric($search_cooking_time), function ($query) use ($search_cooking_time) { $query->whereBetween('cooking_time', [ AdviceTimeEnum::toArray()[$search_cooking_time - 1]->times[0], AdviceTimeEnum::toArray()[$search_cooking_time - 1]->times[1] ]); }) ->when(is_numeric($search_preparation_time), function ($query) use ($search_preparation_time) { $query->whereBetween('preparation_time', [ AdviceTimeEnum::toArray()[$search_preparation_time - 1]->times[0], AdviceTimeEnum::toArray()[$search_preparation_time - 1]->times[1] ]); }); $recipes = $query->orderBy('slug', 'ASC')->paginate(9); return view('fo.pages.ideas.recipes', compact( 'ranges', 'recipes', 'search_range', 'search_cooking_time', 'search_preparation_time' )); } /** * Return a view with a specifi model. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Contracts\View\View */ public function show(Request $request) { $publishedRecipe = $request->publishedRecipe; $recipe = Advice::where('slug', '=', $publishedRecipe)->FirstOrFail(); $relatedRecipes = $recipe->advices()->where('type', '=', AdviceTypeEnum::recipes()->value)->get(); $relatedTips = $recipe->advices()->where('type', '=', AdviceTypeEnum::tips()->value)->get(); return view('fo.pages.ideas.recipe', compact('recipe', 'relatedRecipes', 'relatedTips')); } }