2016-04-20 25 views
0

Ich benutze Laravel 5.2.
Wie schreibe ich diese Abfrage über "order by update time"?Wie schreibe ich diese Abfrage über "order by` update time` "in Laravel 5.2?

Es gibt zwei Tabellen, users und articles, sie haben einen „one-to-many“ -Beziehung,
Ich möchte update time, Benutzernamen und sein/ihr Artikeltitel und Reihenfolge von 's-Artikel abzufragen
wie dies:

username article titles      update time 
Lily  aaa-title-01;aaa-title-02;...  2016-04-20 12:00:00 
Lucy  bbb-title-01;bbb-title-02;...  2016-04-19 12:00:00 
Jim   ccc-title-01;ccc-title-02;...  2016-04-18 12:00:00 

Die update time ist die Aktualisierungszeit des Benutzers neuesten Artikel, zum Beispiel:

Die erste ist username Lily, update time ist 2016-04-20 12:00:00, es stellt dar, dass der neueste Artikel von Lily bei 2016-04-20 12:00:00 aktualisiert wurde.
Die zweite, es stellt dar, dass Lucys neuesten Artikel bei 2016-04-19 12:00:00 aktualisiert wurde.
Der neueste Artikel von Lily ist später als der von Lucy, also ist Lily die erste, Lucy ist die zweite und .., Jim ist die dritte.

writed ich die Abfrage wie folgt aus:

$articles =User::whereHas('articles', function($query) { 
      $query->where('status', 1); //status is 1 or 0, 1 is published,0 is not published. 
     })->get(); 

Diese Abfrage den Benutzer und seine/ihre Artikel bekommen konnte, aber durch update time oben nicht bestellen konnte, wie es zu tun?

+0

Aktualisierungszeit ist Bereich der Artikel, richtig? –

+0

@JoseRojas Ja, ist es. – zwl1619

+0

@MushangiDerrick 's anwer funktioniert nicht für Sie? –

Antwort

0

Fügen Sie einfach orderBy auf die Abfrage und Sie sollten gut aussehen.

$articles =User::whereHas('articles', function($query) { 
    $query->where('status', 1)->orderBy('update_time', 'desc'); 
})->get();