Faktisk, hvis du KAN gøre det med find, KAN du gøre det med paginering. Du kan tage et kig her
Men for at være mere specifik kan du tilføje de betingelser/grænse/felter/contain/ordre osv., som du bruger i find, til sideinddelingsfunktionen.
Jeg har ikke brugt gruppe i paginen men det SKAL virke :D
I dit tilfælde vil du have noget som dette:
$this->paginate = array(
'fields' => array(
'Product.category_id',
'COUNT(Product.hotel_id) as total'
),
'group' => array(
'Product.category_id HAVING COUNT(Product.hotel_id) > 1')
)
);
$data = $this->paginate('Product');
Håber det virker, skriv en kommentar til dit resultat, hvis det ikke virker bliver du nødt til at tilsidesætte det, for det accepterer ikke gruppebetingelsen... selvom jeg tror det vil virke, da paginering er et fund i sidste ende.
EDIT:
Du kan prøve at gøre noget som dette:
Tilsidesæt paginate() og paginateCount(), men med en tweak, snig en betingelse, så du kan se, om det er en paginering med at have eller ej. Noget som dette:
function paginate($conditions, $fields, $order, $limit, $page = 1, $recursive = null, $extra = array()){
//if no having conditions set return the parent paginate
if (empty($conditions['having'])
return parent::paginate($conditions, $fields, $order, $limit, $page, $recursive, $extra)
//if having conditions set return your override
//override code here
}
Så gør du noget lignende i paginateCount(), på den måde har du en selektiv paginering. husk at gøre unset $betingelser['having'], når det ikke er nødvendigt, eller husk at placere det et sted, der ikke påvirker dit fund;)