Php 在CGridView上使用Yii模型和标准

Php 在CGridView上使用Yii模型和标准,php,yii,cgridview,zii-widgets,Php,Yii,Cgridview,Zii Widgets,我正在尝试使用我的模型替换搜索(自定义搜索功能): 结果将是模型+其他表的属性 我试图在视图中显示它们,但它没有声明诸如….之类的属性。。。。(这很清楚,因为模型没有来自另一个表的属性) 那么如何在模型结果中使用下面的小部件 挫折,但依靠专家:) 丹尼 编辑: 1.控制器- public function actionIndex() { if (isset($_POST['Filter']) && !empty($_POST['Filter']['date']) ) { $Ge

我正在尝试使用我的模型替换搜索(自定义搜索功能):

结果将是模型+其他表的属性

我试图在视图中显示它们,但它没有声明诸如….之类的属性。。。。(这很清楚,因为模型没有来自另一个表的属性)

那么如何在模型结果中使用下面的小部件

挫折,但依靠专家:) 丹尼


编辑: 1.控制器-

public function actionIndex()
{
if (isset($_POST['Filter']) && !empty($_POST['Filter']['date']) ) {
$GetDates = new GetDates();
$this->dates = $GetDates->getDatesFromPostWidget($_POST);
$model = new Campaigns;
}
else 
$model=NULL;
$this->render('index',array(
'model' => $model, 'dates' => $this->dates,
)); 
}
模型-

public function combineCampInputByDate($startDate,$endDate) {

$criteria=new CDbCriteria;
$criteria->select = 'food.*,SUM(customer) AS customer, SUM(money) AS money';
$criteria->join = 'JOIN foodType food ON foodtype = food.foodtype '; 
$criteria->condition = "date BETWEEN '$startDate' AND '$endDate'";
$criteria->group = 'foodtype ';
return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
));
}
看法


在模型类中创建两个属性:
public$customer
public$money

您可以拥有任意数量的自定义属性,只要与命名保持一致即可。(如果首先没有
something
模型属性,则不能将SQL
字段名用作something

编辑:您还应该告诉要显示的,如下所示

$this->widget('zii.widgets.grid.CGridView', array(
     'id'=>'bo-campaigns-grid',
     'dataProvider'=>$model->combineCampInputByDate($dates['startDate'],$dates['endDate']),
     'filter'=>$model,
     'columns'=>array(
        'customer',
        'money',
       //etc. for more detailed customization, check the links above
     ),    
   ),
));
}

我不明白你的问题。请为澄清添加更多代码。恐怕它不起作用。。。。发生的情况是,这些值是针对每个对象启动的,但是当我尝试使用小部件时,什么都没有显示,分页也不起作用……如果我使用Gii Search()方法(默认),它确实起作用……我遗漏了一些东西!!请说得更具体些。你预期会发生什么事,后来又发生了什么?您是否试图在cgrid视图中显示
客户
货币
。他们没有出现吗?是的,就是这样…CGrid中的表是空的,当按页码时,页面就变成空白。。我只想创建一个自定义函数来替换模型中的默认搜索,然后使用CGridI将其显示为一个表。我已经编辑了我的答案,请尝试一下,并参考有关CGridView参数的文档:)仍然不起作用。。。我想我找到了一个工作,但它也不起作用,我会把它作为一个新问题发布。谢谢你的帮助!!
$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'bo-campaigns-grid',
'dataProvider'=>$model->combineCampInputByDate($dates['startDate'],$dates['endDate']),
'filter'=>$model,  
),
));
}
$this->widget('zii.widgets.grid.CGridView', array(
     'id'=>'bo-campaigns-grid',
     'dataProvider'=>$model->combineCampInputByDate($dates['startDate'],$dates['endDate']),
     'filter'=>$model,
     'columns'=>array(
        'customer',
        'money',
       //etc. for more detailed customization, check the links above
     ),    
   ),
));
}