How to eager load a relationship & order it in Laravel

Load & Order a relationship in Laravel
Load & Order a relationship in Laravel
Image Description
Koussay
  • Published : Wed, Sep 13, 2023
  • 0 minutes 45 seconds read

Hello, Recently I faced this matter, where I have to load a relation and order it at the same time. Well, thanks to Eloquent, the solution was pretty easy and obvious. Let's imagine for the moment we have a Ticket & TicketReply models. A Ticket has many TicketReply.

The situation was to to get the ticket, and load the replies with them. So the code would be as follows :

Ticket::query()->with('replies', function (HasMany $relation) {
            return $relation->orderBy('created_at', 'DESC')->get();
        })->find($id);

In this code, we would query the tickets table, and eager load the replies, but we passed a callback to the with function, so it will order the replies by their creation date. Theoretically, we can do anything with the callback, even going further and eager load relationships on the TicketReply model itself.

I hope this little tip has been helpful for you.


Tags :

Laravel