2011-04-21 15 views
7

1 के योग प्राप्त करने के लिए CActiveRecord का उपयोग करें 1) क्या Yii में CActiveRecord का उपयोग कर एक पूर्णांक कॉलम का योग प्राप्त करने का कोई तरीका है?एक कॉलम

अन्यथा मुझे कॉलम डेटा प्राप्त करना होगा और इसे सर्वर के पक्ष में जोड़ना होगा।

2) मुझे यह भी लगता है कि एक एसक्यूएल क्वेरी के माध्यम से राशि प्राप्त करना डेटा के कॉलम प्राप्त करने से तेज़ है और इसे PHP पर सर्वर पर जोड़ना है। यदि प्रदर्शन मायने रखता है, तो MySQL सर्वर को ऐसे ऑपरेशन करने के लिए परेशान होना चाहिए या केवल php सर्वर को इसकी देखभाल करने दें।

कृपया कृपया सलाह दें।

+0

शायद सवाल बजाय DB में एक स्तंभ के योग के लिए क्वेरी करने के लिए कैसे किया जाना चाहिए किया जाना चाहिए की कोशिश करो। – Alocus

+4

'$ sum = Yii :: ऐप() -> डीबी-> createCommand (" चयन करें SUM ('theolumnOfData') 'theTableOfData' से 'sum' के रूप में) -> queryScalar(); ' – Alocus

उत्तर

10

1) मुझे ऐसा नहीं लगता है, और जब तक आप स्टेटस संबंध नहीं लेना चाहते हैं, तब तक यह वास्तव में CAVtiveRecord का उपयोग करने के लिए समझ में नहीं आता है। मान लें कि आपके पास "प्रश्न" मॉडल और "उत्तर" मॉडल है और उत्तर एक प्रश्न से संबंधित हैं। आप इस प्रकार का सांख्यिकीय संबंध बनाने के लिए और "प्रश्न" में इसे लागू कर सकते हैं:

Public function relations() { 
    return array(
     'answerSum'=>array(self::STAT, 'Answer', 'questionId', 'select' => 'SUM(answerSum.someFieldFromAnswerTableToSum)') 
    ); 
} 

तो फिर तुम जानकारी पुनः प्राप्त: $ सवाल> answerSum; जहां $ प्रश्न ऊपर के रूप में घोषित संबंधों के साथ प्रश्न का एक उदाहरण है।

2) यह डेटा की मात्रा का मामला है। मैं व्यक्तिगत रूप से एसक्यूएल का चयन करता हूं, क्योंकि यह बड़ी मात्रा में डेटासेट को संभालने में सक्षम है और इस प्रकार भविष्य-बचाता है।

+0

ऐसा क्यों नहीं करता इस तरह CActiveRecord का उपयोग करने के लिए भावना? शायद मुझे CACTiveRecord का उपयोग किये बिना डेटा के कॉलम को समेटने के लिए एक एसक्यूएल निष्पादित करना चाहिए? – Alocus

+0

इसे समाधान के रूप में स्वीकार करते हुए यह इंगित करता है कि ActiveRecord का इस तरह से उपयोग नहीं किया जाना चाहिए। हालांकि, अच्छा क्यों होगा पर आगे स्पष्टीकरण। – Alocus

+0

मुझे आपके सुझाव से प्यार है। मुझे लगता है कि आप मेरे आवेदन से ज्यादा जानते हैं। स्टेट का उपयोग करने के लिए सुझाव देने के लिए धन्यवाद। – Alocus

6

यह

$user = User::model()->findBySql('select sum(`you_column`) as `sum` from user', array()); 
var_dump($user->sum); 

मॉडल में वर्तमान क्षेत्र योग

संबंधित मुद्दे