我在模型中构建了一个自定义函数并返回原始数据:
function(){
...
$connection=Yii::app()->db;
$command=$connection->createCommand($sql);
$rows=$command->queryAll();
return $rows;
}
$ campModel = $ model-> function ..
然后我在CArrayDataProvider中使用这些行:
$dataProvider=new CArrayDataProvider($campModel);
最后我试图使用CGrid查看:
$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'bo-campaigns-grid',
'dataProvider'=>$campModel,...
我猜这与CGrid的分页方式有关......但我迷路了 谢谢你的帮助:)
答案 0 :(得分:9)
创建一个新的CSort和CPagination对象并将它们分配给您的数据提供者,因为CArrayDataProvider没有定义它们。以下是CSort创建的示例:
$dataProvider=new CArrayDataProvider($campModel);
$sort = new CSort();
$sort->attributes = array(
'fecha'=>array(
'asc'=>'dateA DESC',
'desc'=>'dateA ASC',
),
);
$sort->route = 'myController/myMethod';
$dataProvider->sort = $sort;
$dataProvider->sort->defaultOrder='dateA DESC';
答案 1 :(得分:0)
试试这个,
$this->widget('zii.widgets.grid.CGridView', array(
'id' => 'bo-campaigns-grid',
'dataProvider'=> new CArrayDataProvider($campModel, array(
'pagination' => array(
'pageSize' => 10
)
)),
...
答案 2 :(得分:0)
您还可以查看CSqlDataProvider。不确定它是否会为您提供所需的SQL灵活性,但它应该比CArrayDataProvider更容易处理您的排序