我想在用户个人资料视图中显示country name
而不是country id
(country id
在用户个人资料tbl中是FK。)
任何人都可以帮助我吗?
这是我的视图控制器/动作,其中我也有国家模型:
public function actionView($id)
{
$model = new TblUserProfile;
$model = TblUserProfile::model()->find('user_id=:user_id', array(':user_id' => $id));
$countrymodel = new Country;
$countrymodel = Country::model()->findAll();
// var_dump($countrymodel->name);
// die();
$this->render('view', array(
'model' => $model ,
'country' =>$countrymodel
));
}
这是我的观点
<div class="view">
<b><?php echo CHtml::encode($data->getAttributeLabel('id')); ?>:</b>
<?php echo CHtml::link(CHtml::encode($data->id), array('view', 'id'=>$data->id)); ?>
<br />
<b><?php echo CHtml::encode($data->getAttributeLabel('user_id')); ?>:</b>
<?php echo CHtml::encode($data->user_id); ?>
<br />
<b><?php echo CHtml::encode($data->getAttributeLabel('user_occuption')); ?>:</b>
<?php echo CHtml::encode($data->user_occuption); ?>
<br />
<b><?php
// $model = TblUserProfile::model()->find('country_id=:country_id', array(':user_id' => $id));
//echo CHtml::encode($model->getAttributeLabel('country')); ?>:</b>
<?php// echo CHtml::encode($model->name);
?>
<br />
</div>
现在我想在上面的视图中显示国家/地区名称。
这些是国家/地区和用户个人资料表的关系
public function relations() {
// NOTE: you may need to adjust the relation name and the related
// class name for the relations automatically generated below.
return array(
'user' => array(self::BELONGS_TO, 'TblUser', 'user_id'),
'country' => array(self::BELONGS_TO, 'country', 'country_id'),
'state' => array(self::BELONGS_TO, 'state', 'state_id'),
'city' => array(self::BELONGS_TO, 'city', 'city_id')
);
}
答案 0 :(得分:3)
使用以下代码:
<b><?php echo CHtml::encode($data->country->getAttributeLabel('name')); ?>:</b>
<?php echo CHtml::encode($data->country->name); ?>
<br />
如果您所在的国家/地区模型中的国家/地区名称列为name
。
由于关系已到位,我们可以使用它来访问每个用户的相关国家/地区。
在详细视图中,它将变为:
// instead of 'country_id'
array(
'name'=>'country_id',
'value'=>$model->country->name
)
阅读CDetailView
doc,了解如何更改更多内容。
答案 1 :(得分:2)
我会用:
$model = TblUserProfile::model()->with('country')->find('user_id=:user_id', array(':user_id' => $id));
with('country')解释:字符串country来自数组关系键。
然后在视图中显示您将使用:
$model->country->CountryName;
这是以MVC方式执行此操作的推荐方法。我的示例和上面的示例都工作,但上面的一个在视图中有更多的进程/逻辑决策,这打破了MVC的概念,其中Model应该是胖的并且包含所有可能的逻辑/处理,然后控制器将拉出这个数据并将其提供给视图。
答案 2 :(得分:0)
您也可以按照以下回答:
只需将以下代码放入view.php
文件
[
"attribute"=>"User_Country_Id",
'value' =>$model->country->conName ,
],
[
"attribute"=>"User_State_Id",
'value' =>$model->states->stsName ,
],
[
"attribute"=>"User_City_Id",
'value' =>$model->cities->ctName ,
],