Relation Active Record Hardmode

Есть 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’).

Если кто-нибудь сталкивался с подобный, подскажите куда двигаться :)


if(is_array($user_group->group))

А разве $user_group->group - это массив?

Попробуй для начала заменить на просто


if($user_group->group)