我正在尝试用两个表(慈善和投票)之间的查询结果加载一个cGridView。
试图显示一个慈善机构的投票表中的票数。投票台有一个FK到慈善台。
我可以在SQL语言中使用left join执行此操作,但是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子句。
有什么帮助吗?
发布于 2011-10-28 07:40:54
尝试添加到慈善模型
public function relations()
{
return array(
'vote'=>array(self::HAS_ONE, 'Vote', 'charity_id'),
);
}
$this->widget('zii.widgets.grid.CGridView', array(
'dataProvider'=>$dataProvider,
'ajaxUpdate'=>true,
'columns'=>array(
'Name',
array(
'name'=>'Vote Count',
'value'=>'CHtml::encode($data->vote->voteCount)',
),
),
));发布于 2012-01-05 20:41:12
中需要做一些细微的更改
Vote.php (投票模型)
public function relations()
{
return array(
'voteCount'=>array(self::STAT, 'Vote', 'charity_id'),
);
}在attributeLabels()中添加一个字段
'voteCount'=>'Votes',在CGridView中添加'Votes‘列
$this->widget('zii.widgets.grid.CGridView', array(
'dataProvider'=>$dataProvider,
'ajaxUpdate'=>true,
'columns'=>array(
'Name',
'Votes',
),
));https://stackoverflow.com/questions/7923431
复制相似问题