withCount([ 'entries' => function ($query) { $query->where('for_seating', 1); }, ]) ->withCount([ 'unscoredEntries' => function ($query) { $query->where('for_seating', 1); }, ]) ->with('flags') ->get(); $auditionData = []; foreach ($auditions as $audition) { $noShowCount = $audition->entries->filter(function ($entry) { return $entry->hasFlag('no_show'); })->count(); $auditionData[$audition->id] = [ 'id' => $audition->id, 'name' => $audition->name, 'scoredEntriesCount' => $audition->entries_count - $audition->unscored_entries_count, 'totalEntriesCount' => $audition->entries_count, 'scoredPercentage' => $audition->entries_count > 0 ? ((($audition->entries_count - $audition->unscored_entries_count)) / $audition->entries_count) * 100 : 100, 'scoringComplete' => $audition->unscored_entries_count === 0, 'seatsPublished' => $audition->hasFlag('seats_published'), 'audition' => $audition, ]; } $auditionData = collect($auditionData); return view('tabulation.status', compact('auditionData')); } }