На самом деле, если вы МОЖЕТЕ сделать это с помощью find, вы МОЖЕТЕ сделать это с разбиением на страницы. Вы можете посмотреть здесь
Но чтобы быть более точным, вы можете добавить условия/ограничения/поля/содержание/порядок и т. д., которые вы используете в поиске, в функцию разбиения на страницы.
Я не использую группу в разбиении на страницы, но она ДОЛЖНА работать: D
В вашем случае у вас будет что-то вроде этого:
$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');
Надеюсь, это сработает, опубликуйте комментарий к вашему результату, если это не сработает, вам придется переопределить его, потому что оно не принимает групповое условие... хотя я думаю, что это сработает, поскольку нумерация страниц - это находка в конце.
РЕДАКТИРОВАТЬ:
Вы можете попробовать сделать что-то вроде этого:
Переопределите paginate() и paginateCount(), но с настройкой введите условие, чтобы вы могли определить, имеет ли это разбивку на страницы с наличием или нет. Что-то вроде этого:
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
}
Затем вы делаете что-то подобное в paginateCount(), таким образом, у вас есть выборочная разбивка на страницы. не забудьте сделать unset $conditions['having'], если он не нужен, или не забудьте поместить его куда-нибудь, что не повлияет на вашу находку;)
person
api55
schedule
27.09.2011