Заказ Laravel by hasmany отношения

У меня есть две красноречивые модели Threads and Comments , каждая тема имеет много комментариев.

При перечислении потоков мне нужно упорядочить потоки с помощью create_at по убыванию. Итак, мне нужно отсортировать потоки, created at в Comments .

По-видимому, нотация точек не помогает при упорядочении этого способа, как правильно упорядочить потоки?

 $Threads= Thread::all()->orderBy("comment.created_at","desc") 

Важно понять, как работает Laravel с нетерпением. Если мы хотим загрузить ваш пример, Laravel сначала извлекает все потоки. Затем он извлекает все комментарии и добавляет их в объект потоков. Поскольку используются отдельные запросы, невозможно упорядочить потоки комментариями.

Вместо этого вам нужно использовать соединение. Обратите внимание, что в этом примере я предполагаю имена ваших таблиц и столбцов.

 $threads = Thread::leftJoin('comment', 'comment.thread_id', '=', 'thread.id') ->with('comments') ->orderBy('comment.created_at', 'desc') ->get(); 

Поскольку вы присоединяетесь, вам может потребоваться вручную указать столбцы, чтобы выбрать имена столбцов таблиц.

 $threads = Thread::select('thread.*')->leftJoin('comment', 'comment.thread_id', '=', 'thread.id') ->with('comments') ->orderBy('comment.created_at', 'desc') ->get();