Cambierei tutto dove da whereIn come:
if($userid){
$q->andWhereIn('a.userid', $userid);
}
if($catID){
$q->andWhereIn('ca.categorie_id', $catID);
}
Penso che ciò accada perché quando stai usando i risultati nella vista, l'impaginatore non può recuperare tutti i record di seguito, quindi per ogni elemento è necessario eseguire la query per ottenere tutti i campi.