BTW this is my full query at the moment
$query = Listing::query();
return $query
->leftJoin('users', 'user_id', '=', 'users.id')
->leftJoin('tracks', 'tracks.listing_id', '=', 'listings.id')
->leftJoin('votes', 'votes.listing_id', '=', 'listings.id')
->selectRaw('listings.*,
users.name,
count(DISTINCT tracks.id) as tracks,
count(DISTINCT votes.id) as votes,
count(DISTINCT tracks.user_id + votes.user_id) as contributors
')
->groupBy('listings.id')
->orderBy($sortBy,$descending)
->paginate( $limit );
It gives me sortable tracks and votes count but a wrong contributors count as described above