<?php $this->widget('zii.widgets.grid.CGridView', array(
'dataProvider' => $dataProvider,
'columns' => array(
array(
'header' => 'User Name',
'value' => 'CHtml::encode($data->sud_profile->user_id)',//This will use the relationship and get all the details of the paticular user from users table
),
'subject',
'message',
我有两个表,我想显示名称而不是ids 我的两张桌子是:
表1
msg table
---------
id sender receiver subject message
------------------------------------
1 3 4 wish have a god
表2
--------
sud_profile
-------------
id user_id firstname lastname
1 2 kumar rai
从这两个表中,我想根据发送者和user_id等ID来显示名称。
答案 0 :(得分:0)
您应该为相应的模型添加代码或在两个模型中添加相应的关系,但我会尝试引导您,以便您可以根据您的代码进行跟进。
您可以调用Message
模型中定义的关系来访问用户,然后显示username
。
msg
表我假设sender
和receiver
列保留id
表中的user
,您应该在Message
模型中定义关系或者现在定义一个,并在关系数组中添加以下内容(如果不同,则更改模型名称和字段名称。)
由于sender
和receiver
2列都保持不同的user_id
,因此您需要定义2个关系。
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(
'_sender' => array(self::BELONGS_TO, 'User', 'sender'),
'_receiver' => array(self::BELONGS_TO, 'User', 'receiver'),
);
}
然后在GridView
内将您的列配置更改为以下内容。
<?php $this->widget('zii.widgets.grid.CGridView', array(
'dataProvider' => $dataProvider,
'columns' => array(
array(
'name'=>'sender',
'header'=>'Sender',
'htmlOptions'=>array('data-title'=>'Sender'),
'value'=>'$data->_sender->username'
),
array(
'name'=>'receiver',
'header'=>'Receiver',
'htmlOptions'=>array('data-title'=>'Receiver'),
'value'=>'$data->_receiver->username'
),
))
);
sud_profile
表您需要对sud_profile
表执行相同操作,定义关系并使用gridview内的关系显示它。
您的关系如下所示
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, 'User', 'user_id'),
);
}
并在gridview列配置中使用下面的关系
<?php $this->widget('zii.widgets.grid.CGridView', array(
'dataProvider' => $dataProvider,
'columns' => array(
array(
'name'=>'user_id',
'header'=>'Username',
'htmlOptions'=>array('data-title'=>'Sender'),
'value'=>'$data->_user->username'
),
))
);