Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在yii中访问单个模型/控制器/表单中两个不同表中的数据_Php_Yii - Fatal编程技术网

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

Php 如何在yii中访问单个模型/控制器/表单中两个不同表中的数据,php,yii,Php,Yii,我是yii的新手,所以我要问这个问题 实际上我有两张不同的桌子 首先是语言。 有两个字段language(id,language\u name)//这里id是主键 其次是学者。 学者有6个领域。学者(id、姓名、语言id、联系人编号、国家/地区、电子邮件)//此处id是主键,而语言id是语言的外键引用 现在通过Gii代码生成器,我已经用语言和学者的表单生成器生成了模型、控制器和视图,在那里我可以添加不同的语言和学者,我可以管理它 现在我的问题是,当我点击manage scholars时,它会显示

我是yii的新手,所以我要问这个问题

实际上我有两张不同的桌子

首先是语言。

有两个字段language(id,language\u name)//这里id是主键

其次是学者。

学者有6个领域。学者(id、姓名、语言id、联系人编号、国家/地区、电子邮件)//此处id是主键,而语言id是语言的外键引用

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

现在我的问题是,当我点击manage scholars时,它会显示语言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\u name


谢谢

假设您的
学者
类有一个名为
语言
的关系,在模型的
关系()
方法中定义如下:

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

现在,您可以在视图中使用
language.language\u name
作为cdetailview和cgridview的字段名。

在官方文档中有详细说明:,基本上,您必须使用关系来使用
拉入相关表……您还可以在语言模型中添加一个u toString()方法。所以代码缩短到这个