Změnil bych vše kde podle kde jako:
if($userid){
$q->andWhereIn('a.userid', $userid);
}
if($catID){
$q->andWhereIn('ca.categorie_id', $catID);
}
Myslím, že k tomu dochází proto, že když používáte výsledky v zobrazení, stránkovač nemůže načíst všechny záznamy v řadě, takže pro každou položku musí provést dotaz, aby získala všechna pole.