2015-10-10 13 views
5

Ben Yii2 kullanıyorum ve iki tablo var:YII2 ilişki hasmile nasıl kullanılır?

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

nasıl toplamı DESC ve ilişki göre sıralama filtreleme ile GRIDVIEW her kullanıcının tüm noktaları özetleyebilirim? senin User modelde

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

Bunu yapmayın, daha iyi bir nokta ekleyin [counter] (http://www.yiiframework.com/doc-2.0/yii-db-baseactiverecord.html#updateCounters%28%29-detail) kullanıcı. – Beowulfenator

cevap

1

, kendi UserSearch modelde bu gaz giderici

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

olmalıdır, yapabileceğiniz Şimdi

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

Kullanmak o sütun eklemek mümkün olmalıdır senin sıran ve filtrelerdeki bu sütun.

+0

@ user5431131 bu yanıtı verdi mi? – saada

0

Özel dataProvider'ınızı oluşturabilir ve GridView ve Özel Arama Modeminde kullanabilirsiniz.

+0

Bu cevap bir yorum olmalıydı. –