Yii View,替换CGridView中的一些数据库值

时间:2012-06-15 10:22:09

标签: yii

我是Yii的新手,很抱歉,如果我的问题可能很愚蠢,我使用CGridView在表格中显示我的数据库的某些字段:

<?php echo CHtml::link('Advanced Search','#',array('class'=>'search-button')); ?>
<div class="search-form" style="display:none">
<?php $this->renderPartial('_search',array(
    'model'=>$model,
 )); ?>
</div><!-- search-form -->

<?php 


 $this->widget('zii.widgets.grid.CGridView', array(
   'id'=>'show-grid',
   'dataProvider'=>$model->search(),
   'filter'=>$model,
   'columns'=>array(
       'id',
       'title',
       'brief',
       'tbl_season_id',
       'on_season',

                array(
                    'name'=>'status',
                    'value'=>'Lookup::item("NewsStatus",$data->status)',
                    'filter'=>  Lookup::items('NewsStatus'),
                ),
        array(
        'class'=>'CButtonColumn',
        ),
        ),
      )); ?>
    </div>

我想替换显示的一些值,例如on_season字段是二进制,而在表中值为0或1,我想将此值更改为YesNO

tbl_season_id是另一个表的外键,我希望得到本季的名称,而不是用户无法理解的id。

2 个答案:

答案 0 :(得分:3)

您可以参考此Wiki文章,将您的列值自定义为您心中的内容

Yii Documentataion: cgridview-render-customized-complex-datacolumns

请记住,value属性可以是表达式字符串,稍后会对每个行数据进行评估。所以你有一个方法调用,可以根据该行的当前值为你动态计算任何值。

答案 1 :(得分:1)


让你有两张桌子

1):客户2):项目


关系是客户有很多项目。

在模型中


和客户对关系进行建模(客户表模型名称为客户端

 class Client extends CActiveRecord{
    }

和relations()方法;

 return array(
      'projects' => array(self::HAS_MANY, 'Projects', 'clients_id'),
  );

项目模型的关系是(项目表型号名称是项目

      class Projects extends CActiveRecord{
         }

和relations()方法;

   return array(
          'clients' => array(self::BELONGS_TO, 'Client', 'clients_id')
     );

立即 现在您可以使用以下命令获取client_name替换proejct表中的client_id 在CGridView中


  'dataProvider' => $model->search(),
  'columns' => array(
         'id',
          'project_name',
     array(
        'name' => 'client Name',
        'value' => '$data->clients->name',   //where name is Client model attribute 
       ),
    )

和 在CDetailView中的项目视图页面,您可以使用以下

'data' => $model,
'attributes' => array(
               'id',
              'project_name',
         array(
            'name'=>'Client Name',
            'value'=>$model->clients->name ,
        ),  


如果您与公司表有客户关系(公司有很多客户) 客户模式

   'company' => array(self::BELONGS_TO, 'Company', 'company_id'),

您也可以通过以下方法获取公司名称 index( CGridview

   array(
      'name' => 'client Name',
    'value' => '$data->clients->company->name', //where name is company model attribute 
    ),

并在视图中 CDetailView

 array(
    'name'=>'Client Name',
     'value'=>$model->clients->company->name ,
        ),