This report was not functioning because of some poorly written code by an old developer who was overly focused on abstracting things away. I fixed it this morning by doing some straightforward Eloquent queries and using a new Collection method called Transform that uses a callback to change each item. Worked well.