Het is belangrijk om te begrijpen hoe het gretige laden van Laravel werkt. Als we je voorbeeld gretig laden, haalt Laravel eerst alle threads op. Vervolgens haalt het alle opmerkingen op en voegt deze toe aan het threads-object. Omdat er afzonderlijke zoekopdrachten worden gebruikt, is het niet mogelijk om discussielijnen te bestellen op basis van opmerkingen.
U moet in plaats daarvan een join gebruiken. Merk op dat ik in dit voorbeeld naar je tafel-/kolomnamen gok.
$threads = Thread::leftJoin('comment', 'comment.thread_id', '=', 'thread.id')
->with('comments')
->orderBy('comment.created_at', 'desc')
->get();
Aangezien je meedoet, moet je mogelijk handmatig kolommen specificeren om de kolomnamen van je tabellen te selecteren.
$threads = Thread::select('thread.*')->leftJoin('comment', 'comment.thread_id', '=', 'thread.id')
->with('comments')
->orderBy('comment.created_at', 'desc')
->get();