2017-05-27 7 views
2

Wie kann ich Eloquent die Anzahl der comments von einem post und bestellen Sie die posts nach Anzahl der comments zählen?Graf und Ordnung durch die Beziehung mit Laravel und Eloquent

Mein Code ist so etwas wie diese:

class Post extends Model 
{ 
    protected $table = 'posts'; 

    public function comments() 
    { 
     return $this->hasMany('App\Comment'); 
    } 
} 

Ich brauche eine Sammlung von Beiträgen Anzahl der Kommentare in einer eleganten Art und Weise geordnet abgerufen werden, so würde ich es vorziehen, nicht so etwas wie DB::select(select count(comment.post_id), post.id from posts left join comments on posts.id = comments.post_id group by post.id order by count(post.id)) zu verwenden;

Antwort

2

Sie können withCount verwenden, um die Anzahl der Beziehungen abzurufen und sie mit orderBy(*_count) zu bestellen. Etwas wie,

+0

Vielen Dank, ich habe dd ($ posts) und beachten Sie, dass tatsächlich gibt es ein neues Attribut mit dem Namen comments_count. Es ist genau das, wonach ich gesucht habe. –