![](/img/trans.png)
[英]merge two CActiveDataProvider and show result in a CGridview in yii
[英]How to override CActiveDataProvider Method to show CGridview in descending order by default in Yii
我的项目中有许多模型和gridviews,每个模型都有create_dttm
字段。
我现在想知道如何覆盖类CActiveDataProvider
,在其中添加DESC Sort condition
即
'sort' => array(
'defaultOrder' => 'create_dttm DESC',
)
这样它将对我所有的gridview都有效,而不是在每个gridview中添加条件。
例:
public function search() {
$criteria = new CDbCriteria;
$criteria->compare('id', $this->id);
$criteria->compare('name', $this->name, true);
$criteria->compare('age', $this->age);
$criteria->compare('create_dttm', $this->create_dttm, true);
$criteria->compare('update_dttm', $this->update_dttm, true);
return new CActiveDataProvider($this, array(
'criteria' => $criteria,
'pagination' => array(
'pageSize' => 10,
),
'sort' => array(
'defaultOrder' => 'create_dttm DESC',
)
));
}
我该如何处理?
任何帮助,将不胜感激。
让每个模型都继承自BaseModel类,并覆盖默认的scope方法:
<?php
class BaseModel extends CActiveRecord {
...
public function defaultScope() {
return array(
'order' => 'create_dttm DESC',
);
}
我认为简单的方法是在每个模型上添加排序变量。
否则,您可以使用下面的方法使用此方法,但是,如果使用这种方法,则还需要更改名称。
http://www.yiiframework.com/wiki/173/an-easy-way-to-use-escopes-and-cactivedataprovider/
所以我的建议是,在每个模型上添加排序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.