If you have hasMany() relationship, and you want to calculate “children” entries, don’t write a special query. For example, if you have posts and comments on your User model, write this withCount():
public function index(){ $users = User::withCount(['posts', 'comments'])->get(); return view('users', compact('users'));}
And then, in your Blade file, you will access those number with {relationship}_count properties:
@foreach ($users as $user)<tr> <td>{{ $user->name }}</td> <td class="text-center">{{ $user->posts_count }}</td> <td class="text-center">{{ $user->comments_count }}</td></tr>@endforeach
You may also order by that field:
User::withCount('comments')->orderBy('comments_count', 'desc')->get();
Enjoyed This Tip?
Get access to all premium tutorials, video and text courses, and exclusive Laravel resources. Join our community of 10,000+ developers.
Recent Courses
Laravel Coding with AI Agents: Cursor, Claude Code, Codex
5 lessons
1 h 01 min
How to Build Laravel 12 API From Scratch
28 lessons
1 h 21 min
Claude Code for Laravel Projects: Crash Course
8 lessons
48 min