2

我是 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,我想将此值更改为Yesand NO

并且tbl_season_id是另一个表的外键,我想获取季节的名称并将其代替用户无法理解的 id。

4

2 回答 2

4

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

Yii 文档:cgridview-render-customized-complex-datacolumns

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

于 2012-06-15T12:07:45.847 回答
1

让你有两张桌子

1): 客户 2): 项目


关系是一个客户有很多项目。

在模型中


和客户模型关系是(客户表模型名称是客户

 class Client extends CActiveRecord{
    }

和关系()方法;

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

项目模型关系是(项目表模型名称是Projects

      class Projects extends CActiveRecord{
         }

和关系()方法;

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

现在 您可以使用以下内容获取 client_name 替换 CGridView 中 proejct 表中的 client_id


  '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'),

您还可以通过索引中的以下方法获取公司名称(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 ,
        ),

于 2013-03-01T06:31:50.610 回答