我有两个表,其中一个属性是外键。我想在不使用任何小部件的情况下显示它(例如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非常相似,但在我的情况下,我不想使用任何小部件,这可能吗?
答案 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.
项目变量是您的项目模型实例,名称是承包商模型的属性。