@snapey the end result is I can loop through the "Groups" to show the course->name and then loop through the entrees that belong to that group AND that location like so (which works with my little hack):
Its hard to visualise, it seems a bit back to front. I would probably get location with eager load entrees.course and then group entrees by its course using a collection method.
@snapey yes, like you would see in a regular menu entrees grouped by a course like "appetizers". And a course really shouldn't belong to a location since really each location has all the same courses but not the same entrees under a course. I will give your solution a whirl
@snapey that seems to work as well. Is either option better performance wise I wonder? I am getting Allowed memory size of 134217728 bytes exhausted sometimes on load. Or maybe cache the results since items are rarely added or changed?
personally, I would probably have course as an attribute of entree, not a separate model, bit I admit, I dont have the full knowledge of what you need to do.
@snapey Yes that was my initial thought but a course has a few things common to all entrees under it like "description" and "sides". But I might re tool it to make it work better
The other thing I thought of was a courses relationship on Location which is a hasManyThough passing through entrees, you could then simply do $location->load('courses.entrees') and not bother with the grouping