$projects = Project:: when($request->year_from, function($query) use ($request){ $query->where('delivery_year', '>=', $request->year_from); }) ->when($request->year_to, function($query) use ($request){ $query->where('delivery_year', '<=', $request->year_to); }) ->when( $request->delivery_month_from, function($query) use ($request){ $query->where('delivery_month', '>=', $request->delivery_month_from); }) ->when( $request->delivery_month_to, function($query) use ($request){ $query->where('delivery_month', '<=', $request->delivery_month_to); }) ->when( $request->product_group, function($query) use ($request){ $query->whereHas('products', function($q) use ($request) { $q->whereHas('group', function($qi) use ($request){ $qi->whereIn('id', $request->product_group); }); }); }) ->get();