我是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,我想将此值更改为 Yes
和 NO
,
tbl_season_id
是另一个表中的外键,我想获取季节的名称并放置它而不是用户无法理解的 id。
您可以参考此 wiki 文章,根据自己的喜好自定义列值
Yii Documentataion: cgridview-render-customized-complex-datacolumns
请记住,value 属性可以是表达式字符串,稍后会针对行的每个数据对其进行计算。因此,您在那里有一个方法调用,它可以根据该行的当前值为您动态计算任何值。
让你有两张桌子
1):客户 2):项目
关系是一个客户有很多项目。
在模型中
和客户端模型
的关系是(客户端表模型名称是客户端)
class Client extends CActiveRecord{
}
和关系() 方法 ;
return array(
'projects' => array(self::HAS_MANY, 'Projects', 'clients_id'),
);
关系为项目模型(项目表模型名称为"项目")
class Projects extends CActiveRecord{
}
和关系() 方法 ;
return array(
'clients' => array(self::BELONGS_TO, 'Client', 'clients_id')
);
现在现在,您可以使用以下命令来获取替换 proejct 表中client_id client_name在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'),
您也可以通过以下方法获取公司名称索引(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 ,
),