sql >> Databasteknik >  >> RDS >> Mysql

Laravel ordning efter många relationer

Det är viktigt att förstå hur Laravels ivriga lastning fungerar. Om vi ​​ivrigt laddar ditt exempel, hämtar Laravel först alla trådar. Sedan hämtar den alla kommentarer och lägger till dem i trådobjektet. Eftersom separata frågor används är det inte möjligt att beställa trådar efter kommentarer.

Du måste använda en join istället. Observera att jag gissar på ditt bord/kolumnnamn i det här exemplet.

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

Eftersom du går med kan du behöva ange kolumner manuellt för att välja kolumnnamn för dina tabeller.

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


  1. Använda en vy utan primärnyckel med Entity

  2. Hur kan jag importera en .sql-fil till min Heroku postgres-databas?

  3. Hur man installerar MySQL på Debian 7

  4. Validering UNIKT fält i Codeigniter med 2 index