在不使用任何小部件的情况下将int替换为某个值(例如CListView或CGridView)

时间:2013-11-18 05:07:44

标签: yii

我有两个表,其中一个属性是外键。我想在不使用任何小部件的情况下显示它(例如CListView或CGridView) 问题是如何显示varchar而不是INT 我在views / name_folder / index.php中所做的是

<table id="box-table-a">
   <thead>
      <tr>
         <th scope="col">No</th>
         <th scope="col">Project</th>
         <th scope="col">Contractor</th>
      </tr>
   </thead>
   <tbody>
      <tr>
     <?php 
    foreach($projectDataProvider->data as $p):?>
    <td><?php echo $p->id;?></td>
    <td><?php echo $p->project_name;?></td>
    <td><?php echo $p->contractor_id;?></td> //How to echo $p->contractor_name;???              
  </tr>
     <?php endforeach;?>    
</tbody>
</tabel>

问题与此Yii View, Replacing some database values in CGridView非常相似,但在我的情况下,我不想使用任何小部件,这可能吗?

1 个答案:

答案 0 :(得分:0)

请阅读http://www.yiiframework.com/wiki/227/guidelines-for-good-schema-design/ 阅读有关外键的信息。在您的示例中,我认为您需要首先在项目模型中将关系指定给外键contractor_id。

像这样:

public function relations()
{
   return array(
      'contractor' => array(self::BELONGS_TO, 'Contractor', 'contractor_id')
   );
}

一旦您指定了与另一个表(承包商)的关系,您可以通过键入

来获取承包商名称
$project->contractor->name.

项目变量是您的项目模型实例,名称是承包商模型的属性。