// Користувачі з будь-якими постами
$users = User::has('posts')->get();
// Користувачі з мінімум 5 постами
$users = User::has('posts', '>=', 5)->get();
// Користувачі тільки з опублікованими постами
$users = User::whereHas('posts', function ($query) {
$query->where('published', true);
})->get();
// Більш складні умови
$users = User::whereHas('posts', function ($query) {
$query->where('published', true)
->where('views', '>', 1000);
})->get();
// Користувачі без постів
$users = User::doesntHave('posts')->get();
// Комбінування кількох зв'язків
$users = User::has('posts')
->whereHas('comments', fn($q) => $q->where('spam', false))
->get();