将dataprovider更改为模型给定关系yii

时间:2014-04-10 15:19:07

标签: yii

有两个表,百分比和商店。有一种关系,我可以从商店获得百分比数据,例如$ stores-> percentageTable。

我希望从百分比表中获取数据。我一直在做这个循环,但我不想再使用循环了。希望使用CActiveDataProvider代替解决方案。

观点:我想要像顶部一样的东西。第二部分是我通常会做的事情。

  <?php $this->widget('zii.widgets.grid.CGridView', array(
        'id'=>'commission',
//looking for a solution something like this
        'dataProvider'=> new CActiveDataProvider('Store',array('data'=>$commission)),
        'filter'=>$model,
        'columns'=>array( 
            'percent.commission_percent',
            'percent.date_from',
            'percent.date_to',
                ))); ?>
    <?php //I don't want this anymore...
    foreach($commission as $percent){
        echo $percent->com_percent;
        echo $percent->date_from;
        echo $percent->date_to;
    }
    ?>

控制器:我是根据商店而不是百分比表加载的。

public function actionCommission($id)
    {
        $model=$this->loadModel($id);       
        $commission = $model->sellerCommissionOverrides;

        $this->render('commission',array(
            'model'=>$model,
            'commission'=>$commission,
        ));
    }

1 个答案:

答案 0 :(得分:0)

您需要在模型Store中定义关系,即

'percent'=>array(self::HAS_ONE, 'PercentageModel', 'store_id'),

然后你可以像你想要的那样使用它

    'dataProvider'=> new CActiveDataProvider('Store'),
    'filter'=>$model,
    'columns'=>array( 
        'percent.com_percent',
        'percent.date_from',
        'percent.date_to',
    ))); ?>