sql >> Database >  >> RDS >> Mysql

Laravel volgorde door heeftveel relaties

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();


  1. Is het mogelijk om meerdere updates uit te voeren met een enkele UPDATE SQL-instructie?

  2. T-SQL Tuesday #67:Nieuwe back-up en herstel van uitgebreide gebeurtenissen

  3. Vergelijking van Oracle MySQL, Percona Server en MariaDB

  4. Wat is het alternatief voor de gegenereerde kolom in MySQL 5.6