如何使用DataProvider在CGridView中显示查询结果

如何使用DataProvider在CGridView中显示查询结果,gridview,yii,Gridview,Yii,这3个表只是我整个项目(用户、配置文件、登录)的一部分 Login.php(登录表的模型) 我必须在CGridView中显示它,我要显示的代码如下: <?php $this->widget('zii.widgets.grid.CGridView', array( 'dataProvider'=>Login::model()->topten_logins(), 'enablePagination' => false, 'columns'=&g

这3个表只是我整个项目(用户、配置文件、登录)的一部分

Login.php(登录表的模型

我必须在CGridView中显示它,我要显示的代码如下:

<?php $this->widget('zii.widgets.grid.CGridView', array(

    'dataProvider'=>Login::model()->topten_logins(),
    'enablePagination' => false,
    'columns'=>array(
        'Name',
        'Joined',
        'Logins',
        array(
            'class'=>'CButtonColumn',
        ),
    ),
)); ?>

我只想显示登录次数最多的前十名用户。

但它给我的错误信息是:

未定义属性“Login.Name”

我以前没用过Yii。因此,我们将非常感谢您的帮助。

尝试将函数“public function topten_logins()”移动到用户模型中,或者移动到您为CGridView指定了所有列名的模型中

否则,可以将列数组设置为

$column['name']=>get name from user table 
$column['Joined']=>get Joined from related table 
$column['Logins']=>get Logins from related table 
然后设置

'columns'=>$column

在CGridView中,问题是您正在使用“as Name and as Logins”进行查询。在这种情况下,您需要做的是将“Name”和“Logins”定义为模型中的变量。在模型的类定义中添加

public $Name;
public $Logins; 

而且它应该能用。

非常感谢,从过去14个小时以来,我一直在为这3条线忙。。它工作得很好。嘿@redGREENblue,你能告诉我如何在这上面应用排序吗?谢谢你的帮助,但它不起作用,或者我不能清楚地理解它。。@redGreenblue的另一个建议很简单,告诉我在哪里设置列数组??(在函数内部或其他地方)
public $Name;
public $Logins;