Just a code example from my project, showing the possibility of filtering hasMany relationships.
TagTypes -> hasMany Tags -> hasMany Examples
And you wanna query all the types, with their tags, but only those that have examples, ordering by most examples.
$tag_types = TagType::with(['tags' => function ($query) { $query->has('examples') ->withCount('examples') ->orderBy('examples_count', 'desc'); }])->get();