Как отобразить результат запроса в CGridView с использованием DataProvider - PullRequest
2 голосов
/ 23 декабря 2011

Эти 3 таблицы являются частью всего моего проекта (пользователи, профиль, логин)

Login.php ( модель для таблицы логина )

public function topten_logins(){

    $criteria = new CDbCriteria;
    $criteria->select = 'concat(u.firstname," ",u.lastname) as Name, p.join_date as Joined, count(*) as Logins';
    $criteria->alias = 'l';
    $criteria->join = 'left join users u on (u.id = l.user_id) left join profile p on (p.user_id = l.user_id)';
    $criteria->group = 'l.user_id';
    $criteria->order = 'Logins desc';
    $criteria->limit = '10';

    return new CActiveDataProvider($this, array(
        'criteria'=>$criteria,
    ));
}

и мне нужно отобразить его в 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.Итак, ваша помощь будет высоко оценена.

Ответы [ 2 ]

2 голосов
/ 23 декабря 2011

Проблема в том, что вы делаете запрос с «именем и логином». В этом случае вам нужно определить «Имя» и «Логины» как переменные в вашей модели. в определении класса вашей модели добавьте

public $Name;
public $Logins; 

И это должно работать.

0 голосов
/ 23 декабря 2011

Попробуйте переместить функцию "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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...