, siang: array, malam: array, snack: array} */ public function generate(string $statusGabungan): array { $foodsForStatus = Food::query() ->select('foods.*') ->join('food_conditions', 'food_conditions.food_id', '=', 'foods.id') ->where('food_conditions.status_gizi', $statusGabungan) ->inRandomOrder() ->get(); $snacks = Food::query() ->whereRaw('LOWER(kategori) = ?', ['vitamin']) ->inRandomOrder() ->limit(2) ->get(); $pick = fn ($collection, int $n) => $collection ->take($n) ->map(fn (Food $f) => ['id' => $f->id, 'nama' => $f->nama, 'kategori' => $f->kategori]) ->values() ->all(); return [ 'pagi' => $pick($foodsForStatus->slice(0), 2), 'siang' => $pick($foodsForStatus->slice(2), 2), 'malam' => $pick($foodsForStatus->slice(4), 2), 'snack' => $snacks->map(fn (Food $f) => ['id' => $f->id, 'nama' => $f->nama, 'kategori' => $f->kategori])->values()->all(), ]; } }