Je důležité pochopit, jak funguje nedočkavé načítání Laravelu. Pokud dychtivě načteme váš příklad, Laravel nejprve načte všechna vlákna. Poté načte všechny komentáře a přidá je do objektu vláken. Protože se používají samostatné dotazy, není možné seřadit vlákna podle komentářů.
Místo toho musíte použít připojení. Všimněte si, že v tomto příkladu hádám názvy vašich tabulek/sloupců.
$threads = Thread::leftJoin('comment', 'comment.thread_id', '=', 'thread.id')
->with('comments')
->orderBy('comment.created_at', 'desc')
->get();
Protože se připojujete, možná budete muset ručně zadat sloupce, abyste vybrali názvy sloupců v tabulkách.
$threads = Thread::select('thread.*')->leftJoin('comment', 'comment.thread_id', '=', 'thread.id')
->with('comments')
->orderBy('comment.created_at', 'desc')
->get();