song_id === $song->id, 404); $arrangement->load([ 'arrangementGroups' => fn ($query) => $query->orderBy('order'), 'arrangementGroups.group.slides' => fn ($query) => $query->orderBy('order'), ]); $groupsInOrder = $arrangement->arrangementGroups->map(function ($arrangementGroup) { $group = $arrangementGroup->group; return [ 'name' => $group->name, 'color' => $group->color ?? '#6b7280', 'slides' => $group->slides->map(fn ($slide) => [ 'text_content' => $slide->text_content, 'text_content_translated' => $slide->text_content_translated, ])->values()->all(), ]; }); $pdf = Pdf::loadView('pdf.song', [ 'song' => $song, 'arrangement' => $arrangement, 'groupsInOrder' => $groupsInOrder, ]); $filename = str($song->title)->slug() . '-' . str($arrangement->name)->slug() . '.pdf'; return $pdf->download($filename); } }