Laravel OrderBy relationship counter

Submitted by kupendra - 5 years ago

If you want to count the number of results from a relationship without actually loading them you may use the "withCount" method, which will place a "{relation}_count" column on your resulting models.

For example:

$posts = App\Post::withCount('comments')->get();

foreach ($posts as $post) {
    echo $post->comments_count;
}

Other example:

$posts = App\Post::withCount('comments')->orderBy('comments_count', 'desc')->paginate(50);