首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Yii CGridView和SQL计数

Yii CGridView和SQL计数
EN

Stack Overflow用户
提问于 2011-10-28 07:02:13
回答 2查看 2.4K关注 0票数 0

我正在尝试用两个表(慈善和投票)之间的查询结果加载一个cGridView。

试图显示一个慈善机构的投票表中的票数。投票台有一个FK到慈善台。

我可以在SQL语言中使用left join执行此操作,但是cGridView需要一个CActiveDataProvider对象来显示数据,并且我不确定如何连接这两个表以返回一个不仅计数,而且不显示任何等于0且按投票排序的结果。

我目前正在做的是:

在投票模式中:

代码语言:javascript
复制
public function relations()
{
    return array(
        'voteCount'=>array(self::STAT, 'Vote', 'charity_id'),
    );
}

charity_id是慈善桌上的FK

然后构建CGridView小部件:

代码语言:javascript
复制
$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子句。

有什么帮助吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-28 07:40:54

尝试添加到慈善模型

代码语言:javascript
复制
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)',
        ),
    ),
));
票数 0
EN

Stack Overflow用户

发布于 2012-01-05 20:41:12

中需要做一些细微的更改

Vote.php (投票模型)

代码语言:javascript
复制
public function relations()
{
    return array(
        'voteCount'=>array(self::STAT, 'Vote', 'charity_id'),
    );
}

在attributeLabels()中添加一个字段

代码语言:javascript
复制
'voteCount'=>'Votes',

在CGridView中添加'Votes‘列

代码语言:javascript
复制
$this->widget('zii.widgets.grid.CGridView', array(
    'dataProvider'=>$dataProvider,
    'ajaxUpdate'=>true,
    'columns'=>array(
        'Name',
        'Votes',
    ),
));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7923431

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档