使用id的两个表中的Yii CGridView列名

时间:2018-04-16 09:21:10

标签: view yii grid yii1.x

的index.php

<?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来显示名称。

1 个答案:

答案 0 :(得分:0)

您应该为相应的模型添加代码或在两个模型中添加相应的关系,但我会尝试引导您,以便您可以根据您的代码进行跟进。

您可以调用Message模型中定义的关系来访问用户,然后显示username

关于msg

我假设senderreceiver列保留id表中的user,您应该在Message模型中定义关系或者现在定义一个,并在关系数组中添加以下内容(如果不同,则更改模型名称和字段名称。)

由于senderreceiver 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'
         ),    
    ))
);