असल में यदि आप इसे ढूंढ सकते हैं तो आप इसे पेजिनेट के साथ कर सकते हैं। आप यहां देख सकते हैं
लेकिन अधिक विशिष्ट होने के लिए आप उन शर्तों/सीमा/फ़ील्ड/कंटेन/ऑर्डर इत्यादि को जोड़ सकते हैं जिनका उपयोग आप पेजिनेट फ़ंक्शन में ढूंढते हैं।
मैंने पेजिनेट में समूह का उपयोग नहीं किया है, लेकिन इसे काम करना चाहिए:डी
आपके मामले में आपके पास कुछ ऐसा होगा:
$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');
उम्मीद है कि यह काम करता है, अपने परिणाम की एक टिप्पणी पोस्ट करें, अगर यह काम नहीं करता है तो आपको इसे ओवरराइड करना होगा, क्योंकि यह समूह की स्थिति को स्वीकार नहीं कर रहा है ... हालांकि मुझे लगता है कि यह काम करेगा क्योंकि पेजिनेशन अंत में एक खोज है।
संपादित करें:
आप ऐसा कुछ करने का प्रयास कर सकते हैं:
पेजिनेट () और पेजिनेटकाउंट () को ओवरराइड करें, लेकिन एक ट्वीक के साथ, एक शर्त को छिपाएं ताकि आप बता सकें कि यह पेजिनेशन है या नहीं। कुछ इस तरह:
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
}
फिर आप पेजिनेटकाउंट() में कुछ ऐसा ही करते हैं, इस तरह आपके पास एक चुनिंदा पेजिनेट होता है। एक बार जब इसकी आवश्यकता न हो तो $ शर्तों ['होने'] को अनसेट करना याद रखें या इसे कहीं रखना याद रखें जो आपके खोज को प्रभावित नहीं करता है;)