求教个self::STAT排序问题! [ 新手入门 ]
<?php
/**
* This is the model class for table "user".
*
* The followings are the available columns in table 'user':
* @property integer $id
* @property string $username
* @property string $password
* @property string $email
* @property integer $sex
* @property integer $integral
* @property string $reg_time
* @property string $last_login
* @property string $last_ip
* @property integer $user_rank
* @property integer $createtime
* @property integer $active
* @property integer $points
*/
class User extends CActiveRecord
{
public $nums;
/**
* Returns the static model of the specified AR class.
* @return User the static model class
*/
public static function model($className=__CLASS__)
{
return parent::model($className);
}
/**
* @return string the associated database table name
*/
public function tableName()
{
return 'user';
}
/**
* @return array validation rules for model attributes.
*/
public function rules()
{
// NOTE: you should only define rules for those attributes that
// will receive user inputs.
return array(
array('id, username, createtime', 'required'),
array('id, sex, integral, user_rank, createtime, active, points', 'numerical', 'integerOnly'=>true),
array('username, email', 'length', 'max'=>60),
array('password', 'length', 'max'=>120),
array('last_ip', 'length', 'max'=>15),
array('reg_time, last_login', 'safe'),
// The following rule is used by search().
// Please remove those attributes that should not be searched.
array('id, username, password, email, sex, integral, reg_time, last_login, last_ip, user_rank, createtime, active, points, nums', 'safe', 'on'=>'search'),
);
}
/**
* @return array relational rules.
*/
public function relations()
{
// NOTE: you may need to adjust the relation name and the related
// class name for the relations automatically generated below.
return array(
'docsCount' => array(self::STAT, 'Docs', 'user_id'),
);
}
/**
* @return array customized attribute labels (name=>label)
*/
public function attributeLabels()
{
return array(
'id' => 'ID',
'username' => Yii::t('main','Username'),
'password' => 'Password',
'email' => Yii::t('main','Email'),
'sex' => 'Sex',
'integral' => Yii::t('main','Integral'),
'reg_time' => 'Reg Time',
'last_login' => 'Last Login',
'last_ip' => 'Last Ip',
'user_rank' => 'User Rank',
'createtime' => Yii::t('main','Createtime'),
'active' => 'Active',
'points' => Yii::t('main','Points'),
'nums' => Yii::t('main','DocsNums'),
);
}
/**
* Retrieves a list of models based on the current search/filter conditions.
* @return CActiveDataProvider the data provider that can return the models based on the search/filter conditions.
*/
public function search()
{
// Warning: Please modify the following code to remove attributes that
// should not be searched.
$criteria=new CDbCriteria;
$criteria->with = array('docsCount');
$criteria->compare('docsCount',$this->nums, true);
$criteria->compare('t.id',$this->id);
$criteria->compare('username',$this->username,true);
$criteria->compare('password',$this->password,true);
$criteria->compare('email',$this->email,true);
$criteria->compare('sex',$this->sex);
$criteria->compare('integral',$this->integral);
$criteria->compare('reg_time',$this->reg_time,true);
$criteria->compare('last_login',$this->last_login,true);
$criteria->compare('last_ip',$this->last_ip,true);
$criteria->compare('user_rank',$this->user_rank);
$criteria->compare('createtime',$this->createtime);
$criteria->compare('active',$this->active);
$criteria->compare('points',$this->points);
$sort = new CSort();
$sort->defaultOrder = 't.id DESC';
$sort->attributes = array(
'id' => array('asc'=>'t.id','desc'=>'t.id DESC'),
'username'=> array('asc'=>'t.username','desc'=>'t.username DESC'),
'email'=> array('asc'=>'t.email','desc'=>'t.email DESC'),
'integral'=> array('asc'=>'t.integral','desc'=>'t.integral DESC'),
'points'=> array('asc'=>'t.points','desc'=>'t.points DESC'),
'nums'=> array('asc'=>'docsCount','desc'=>'docsCount DESC'),
'createtime'=> array('asc'=>'t.createTime','desc'=>'t.createTime DESC'),
);
$sort->applyOrder($criteria);
return new CActiveDataProvider(get_class($this), array(
'sort'=>$sort,
'criteria'=>$criteria,
));
}
}
视图代码:
<h2>用户查看</h2>
<?php
$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'user-grid',
'dataProvider'=>$model->search(),
'itemsCssClass'=>'fullwidth formtab',
'filter'=>$model,
'columns'=>array(
'id',
'username',
//'password',
'email',
//'sex',
array(
'name'=>'nums',
'value'=>'$data->docsCount',
),
'integral',
//'reg_time',
//'last_login',
//'last_ip',
//'user_rank',
'points',
'createtime:datetime',
//'active',
array(
'class'=>'CButtonColumn',
),
),
));
?>
[attach]419[/attach]
[attach]420[/attach]
[attach]421[/attach] 执行的SQL语句。
我想对自定义的nums字段进行排序和搜索查询,但是页面排序执行后页面程序报错,求教原因!
共 5 条回复
-
结果是STAT不能进行排序!谢谢大家的帮助!http://www.yiiframework.com/forum/index.php?/topic/2888-使用selfstat的字段如何进行排序?/
jiege 陕西西安
注册时间:2011-04-02
最后登录:2014-07-03
在线时长:0小时40分
最后登录:2014-07-03
在线时长:0小时40分
- 粉丝1
- 金钱250
- 威望0
- 积分250