我想加載一個cGridView與兩個表(慈善和投票)之間的查詢結果。Yii CGridView和SQL計數
試圖證明在表決表慈善機構的票數。投票表有一個FK給慈善機構。
我可以在SQL中使用左連接來做到這一點,但cGridView需要一個CActiveDataProvider對象來顯示數據,我不確定如何將兩個表連接起來以返回不僅計數的結果,而且也不會顯示任何等於0的結果並按票數排序。
我目前正在做的:
在投票型號:
public function relations()
{
return array(
'voteCount'=>array(self::STAT, 'Vote', 'charity_id'),
);
}
charity_id作爲FK爲慈善表。
然後建立CGridView部件:
$criteria=new CDbCriteria(array(
'with' => 'voteCount',
));
$dataProvider=new CActiveDataProvider('Charity', array(
'pagination' => false,
'criteria' => $criteria,
));
$this->widget('zii.widgets.grid.CGridView', array(
'dataProvider'=>$dataProvider,
'ajaxUpdate'=>true,
'columns'=>array(
'Name',
array(
'name'=>'vote.voteCount',
'value'=>'CHtml::encode($data->voteCount)',
),
),
));
現在它返回多個結果,我似乎無法弄清楚如何排序並添加where子句爲好。
任何幫助?
因爲你不必使用CActiveDataProvider,可以使用CSqlDataProvider過的記錄,但根據ofcourse CActiveDataProvider的文檔是首選。 –
我對標準並不太滿意,但是您絕對可以爲標準添加條件,例如 - '$ criteria-> condition ='voteCount> 0'' –