The link and code provided below is extracted from code I wrote for a Controller class used on my Laravel site, Keep Track . IIRC my biggest achievement while creating Keep Track was on the item listing page . Sorting (and one level of sub-sorting) on separate/related tables, for me, was tricky. But I was able to figure out how to write a couple custom callbacks which accounted for a couple different sorting scenarios. Laravel provides no advanced documentation for custom sorting (especially with eager loads). However, the underlying Laravel (sort) code, the PHP docs, and Google/ Stack Overflow all helped a lot. In the end, persistence prevailed over 2 or 3 challenges. Just, please don't ask me to do it again. Just kidding!... These challenges are the most rewarding. This one section of my Controller code is provided on my GitHub 'snippets' page . The sorting particulars (shown partially below) are the code blocks at lines 167 and 183. https://github.com/KDCinf