Yii, получить значение из другой таблицы с внешним ключом - PullRequest
4 голосов
/ 15 декабря 2011

Я новичок в фреймворке yii, поэтому могу помочь с чем-нибудь.Допустим, у меня в базе данных есть таблица с пользователями, одно из полей профиля - национальность.В другой таблице я получил много национальностей, таких как:

 id    Nationality    short
  1    Germany         DE
  2    France          FR
  3    Netherlands     NL

и т.д ... около 60+ национальностей.В пользовательской таблице национальность пользователя связана с этой таблицей, например:

id    username    nationality
1      user            1

, что означает национальность пользователя 1 = германия.но как я могу выбрать Германию из таблицы национальностей, когда я нахожусь в представлении профиля?

Я надеюсь, что я ясно, еще спросить:)

привет, Стефан.

Ответы [ 2 ]

10 голосов
/ 15 декабря 2011

Вам нужны классы моделей для обеих таблиц, например,

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;

Ресурсы

2 голосов
/ 15 декабря 2011

Тахт, для чего нужны отношения: см. реляционная модель :

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

По вашему мнению, если вы используете CDetailView , вы можете ссылаться на национальность по имени отношения и вызывать его атрибуты с точечной нотацией:

nationality.short

Прочтите документы CDetailView для получения дополнительных примеров

...