Yii,用外键从其他表中获取值

时间:2011-12-15 14:14:38

标签: php yii foreign-keys

我是yii框架的新手,所以我可以使用一些帮助。 假设我的数据库中有一个用户表,其中一个配置文件字段是国籍。 在另一张桌子上,我有很多这样的国籍:

 id    Nationality    short
  1    Germany         DE
  2    France          FR
  3    Netherlands     NL
等等......大约有60多个国籍。 在usertable中,用户国籍与此表链接,如下所示:

id    username    nationality
1      user            1

这意味着用户1的国籍=德国。但是当我在个人资料视图中时,如何从国籍表中选择德国?

我希望我明白,否则问:)

映入眼帘, 斯特凡。

2 个答案:

答案 0 :(得分:10)

您需要两个表的模型类,例如

class Profile extends CActiveRecord {
    ...
}

class Nationality extends CActiveRecord {
    ...
}

然后在Profile模型中,您需要 Nationality的关系:

public function relations() {
    return array(
        'nationality' => array(self::BELONGS_TO, 'Nationality', 'nationality'),
    ),
}

关系'nationality'的名称是您引用相关模型的方式,例如:

$profile = Profile::model()->findByPk($id);
echo $profile->nationality->short;

资源

答案 1 :(得分:2)

Tahts的关系是什么:见relational model

'nationality' => array(self::BELONGS_TO, 'Nationality', 'nationality')

Amd在您的视图中,如果您使用CDetailView,则可以通过其关系名称引用国籍,并使用点表示法调用其属性:

nationality.short

阅读CDetailView文档了解更多示例