2012-12-10 9 views
12

मैं Zend फ्रेमवर्क 2 का उपयोग इस तरह एक प्रश्न करने के लिए कोशिश कर रहा हूँ:Zend फ्रेमवर्क 2 और चयन गिनती (*) क्वेरी

SELECT count(*) as num FROM mytable 

यहाँ कोड मैं अपने चयन बयान के निर्माण के लिए उपयोग कर रहा हूँ है (में रखना मन मैं आवश्यक वर्गों आयात करने के बाद):

$select = new Select(); 
$select->from('mytable') 
     ->columns(array('num'=>'count(*)'), false); 

है क्योंकि परिणामी क्वेरी इस प्रकार इस कोड काम नहीं करता:

SELECT [count(*)] AS [num] FROM [mytable] 

... जो निम्न त्रुटि को फेंकता है:

Invalid column name 'count(*)' 

यह गिनती (*) के चारों ओर वर्ग ब्रैकेट के कारण होता है। एसक्यूएल में [गिनती (*)] की बजाय गिनती (*) के लिए मूल रूप से काम करने के लिए मैं इसे कैसे प्राप्त कर सकता हूं। साथ ही, मुझे पता है कि आप इसे केवल नियमित प्रश्न के साथ कर सकते हैं, लेकिन मुझे इसे ऑब्जेक्ट ऑब्जेक्ट के साथ काम करने की ज़रूरत है। जहां तक ​​मुझे पता है, यह ज़ेंड के पिछले संस्करणों के साथ काम करता था, मैंने उन लोगों के लिए बहुत सारे समाधान देखे हैं, लेकिन ज़ेंड फ्रेमवर्क 2 के लिए कुछ नहीं।

उत्तर

39

कोई अन्य मंच पर कोई मुझे जवाब देने के लिए बहुत दयालु था इसके लिए। यह कि यह कैसे हुआ है:

$select->columns(array('num' => new \Zend\Db\Sql\Expression('COUNT(*)'))); 
4

हाँ, new \Zend\Db\Sql\Expression('COUNT(*)') बिना, बस COUNT(*) निम्न त्रुटि बयान की ओर जाता है:

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'albs.COUNT(*)' in 'field list'

होने

new \Zend\Db\Sql\Expression('COUNT(*)') 

यह संकल्प लिया।

0

क्या आप इस कोड को आजमा सकते हैं?

$this->num = $select->columns(array('num' => new \Zend\Db\Sql\Expression('COUNT(*)'))); 

return $this->num;