2015-10-10 4 views
5

मैं Yii2 उपयोग कर रहा हूँ और मैं दो तालिकाओं है:YII2 संबंध का उपयोग करके योग कैसे करें?

user (id) 
answer_points (id, user_id, value) 

मैं कैसे छानने के साथ एक gridview में प्रत्येक उपयोगकर्ता के सभी बिंदुओं को जोड़ सकते हैं, योग DESC और संबंध द्वारा छँटाई?

return $this->hasMany(\frontend\models\Points::className(), 
     ['user_id' => 'id'])->sum('value'); 
+0

ऐसा न करें, बेहतर बिंदु [काउंटर] जोड़ें (http://www.yiiframework.com/doc-2.0/yii-db-baseactiverecord.html#updateCounters%28%29-detail) कॉलम को अपने कॉलम उपयोगकर्ता। – Beowulfenator

उत्तर

1

अपने User मॉडल में, आप इस गेटर

public function getPoints() 
{ 
    return $this->hasMany(\frontend\models\Points::className(), ['user_id' => 'id'])->sum('value'); 
} 

होना चाहिए अपने UserSearch मॉडल में, आप कर सकते हैं

public function search(...) { 
    $query = User::find()->joinWith('points'); //<--- alias to the getter defined above 
    ... 
} 

अब आप उपयोग करने के लिए है कि स्तंभ जोड़ने के लिए सक्षम होना चाहिए आपके कॉल और फ़िल्टर में वह कॉलम।

+0

@ user5431131 इस उत्तर में मदद मिली? – saada

0

आप अपना कस्टम डेटा प्रदाता बना सकते हैं और ग्रिड व्यू और कस्टम सर्च मॉडल में उपयोग कर सकते हैं।

+0

यह उत्तर एक टिप्पणी होना चाहिए था। –

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