如何在yii中访问单个模型/控制器/表单中两个不同表的数据

时间:2013-11-22 07:23:38

标签: php yii

我是yii的新手和初学者,所以我问这个问题。

其实我有两张不同的桌子。

首先是语言。

有两个字段language(id,language_name)//这里id是主键。

其次是学者。

学者有6个领域。学者(id,name,language_id,contact_no,country,email)//这里id是主键,而language_id是语言的外键引用。

现在通过Gii Code Generator我已经使用语言和学者的表单生成器生成了模型,控制器和视图,我可以添加不同的语言和学者,我可以管理它。

现在我的问题是当我点击管理学者时,它会显示语言ID,我想在这里显示语言名称。

那么你能帮助我如何在这里访问语言名称而不是语言ID。

我可以通过以下代码在视图文件中获取语言名称。

<b><?php echo CHtml::encode($data->getAttributeLabel('language_id')); ?>:</b>
    <?php
        $criteria = new CDbCriteria ;
        $criteria->select='language_name';
        $qAlbums=Language::model()->findbyPk($data->language_id);
        echo $qAlbums->language_name;
    ?>

但我不想在视图中编写类似代码,我希望如此,我直接获得数据中的$data->language_name数据。

由于

1 个答案:

答案 0 :(得分:1)

假设您的Scholar类在模型的language方法中定义了一个名为relations()的关系,如下所示:

'language' => array(self::BELONGS_TO, 'Language', 'language_id'),

您现在可以在视图中使用<?php echo $data->language->language_name; ?>,并在CDetailViews和CGridViews中使用language.language_name作为字段名称。