में मेरे पास एक केकपीएचपी 1.3 ऐप है और वास्तव में डेटा लाने के लिए Containable behavior का आनंद लें।केकपीएचपी मॉडल: COUNT (*) कंटेनर
मान लें कि मेरे पास टिप्पणियों के साथ कई से अधिक संबंधों में पोस्ट हैं। मैं सभी पदों और संबंधित टिप्पणियों की एक सूची (पेजिनेशन के लिए) क्वेरी करने के लिए कंटेनर का उपयोग करता हूं। लेकिन मुझे केवल दिलचस्पी है कि प्रत्येक पोस्ट में कितनी टिप्पणियां हैं। मुझे टिप्पणियों की सभी पंक्तियों को लाए बिना इस क्वेरी को कंटेनबल के साथ प्राप्त करने का कोई तरीका नहीं मिला। मैंने कोशिश की:
$this->paginate=array(
'fields' => 'Post.title, Post.created',
'contain' => array('Comment'=>'COUNT(*) AS count'),
);
परिणाम 'मॉडल "टिप्पणी में परिणाम" गणना "त्रुटि संदेश से जुड़ा नहीं है।
$this->paginate=array(
'fields' => array('Post.title, Post.created'),
'contain' => array('Comment'=>array('fields'=>'COUNT(*) AS count'),
);
काम नहीं करता है, परिणाम सेट प्रत्येक पोस्ट के लिए होता है पिछले एक है, जहां यह गिनती फ़ील्ड के अलावा एक खाली टिप्पणी सरणी, लेकिन सभी टिप्पणियां न सिर्फ संबंधित लोगों की संख्या हो रही है।
मेरे अन्य अनुमान
$this->paginate=array(
'fields' => 'Post.title, Post.created, COUNT(Comment.id)',
'contain' => array('Comment'=>array('fields'=>''),
);
था, लेकिन इस एक त्रुटि में परिणाम है क्योंकि hasMany रिश्ते, स्वतंत्र रूप से पूछे जाते हैं, इसलिए उत्तर तालिका पोस्ट प्रविष्टियों के लिए क्वेरी में नहीं है। मैं एक पोस्ट की टिप्पणियों की संख्या कैसे गिन सकता हूं?
'counterCache' => true
हर बार कुछ भी करेंगे:
यह एक अच्छा विचार है, लेकिन यह अधिक जटिल प्रश्नों के लिए समस्या का समाधान नहीं करता है, जहां एक पंक्ति से जुड़ी गिनती को काम नहीं करेगा (उदाहरण के लिए एक रिपोर्टिंग सिस्टम जहां उपयोगकर्ता द्वारा कुछ शर्तों को चुना जाता है)। क्या कंटेनर का उपयोग करके गिनती पाने का कोई और तरीका नहीं है? – Zxaos