Есть 3 таблицы:
CREATE TABLE user
(
id serial NOT NULL,
CONSTRAINT gps_user_pkey PRIMARY KEY (id)
)
CREATE TABLE usergroup
(
user_id integer NOT NULL,
group_id integer NOT NULL,
"role" integer NOT NULL,
CONSTRAINT gps_usergroup_pkey PRIMARY KEY (user_id, group_id)
)
CREATE TABLE group
(
id serial NOT NULL,
"name" character varying(100),
CONSTRAINT gps_group_pkey PRIMARY KEY (id)
)
Я описал следующие отношения:
// User
return array(
'user_group'=>array(self::HAS_MANY, 'UserGroup', 'user_id'),
);
// UserGroup
return array(
'user'=>array(self::BELONGS_TO, 'User', 'user_id'),
'group'=>array(self::BELONGS_TO, 'Group', 'group_id'),
);
// Group
return array(
'user_group'=>array(self::HAS_MANY, 'UserGroup', 'group_id'),
);
Мне нужно вытащить модель через юзера, которая будет содержать в себе связку с группой, при этом должен быть доступ к полю role в таблице usergroup.
Пытаюсь сделать так:
$model = User::model()->with(array(
'user_group.group',
))->findByPk(Yii::app()->user->id);
Прочитать пытаюсь так:
if(is_array($model->user_group))
foreach($model->user_group as $user_group) {
echo $user_group->user_id.' '.$user_group->group_id.' '.$user_group->role.'<br />';
if(is_array($user_group->group))
foreach($user_group->group as $group) {
echo $group->id.' '.$group->name.'<br />';
}
else
echo 'no groups found';
}
В результате удалось вытащить 1 уровень, но по группе пройтись не получилось (вывело ‘no groups found’).
Если кто-нибудь сталкивался с подобный, подскажите куда двигаться