Как осуществить связь login->contact->city

У меня следующая структура таблиц.

Имеется таблица логинов и связаная с не таблица контактов


	public function relations()

	{

		return array(

             'contact'   => array(self::HAS_ONE, 'MraContact', 'mra_login_id'),

		);

	}

Кроме того в таблицу котактов записываетс Id региона и города поэтому я добавил


	public function relations()

	{


		return array(

            'tb_city'   => array(self::HAS_ONE, 'ConstCity', 'city'),

            'tb_region' => array(self::HAS_ONE, 'ConstRegion', 'region'),

		);

	}

Соответсвенно во вьювере я захотел у видеть город и регион


    

	<?php echo CHtml::encode($data->contact->tb_region->region_name); ?>

	<?php echo CHtml::encode($data->contact->tb_city->city_name); ?>



После чего у меня вылетел httpd с ошибкой.

Так можно в ActiveRecorde сделать такую связь или лучше не стои?

Нужно правильно составить запрос:




User::model()->with('contact.tb_region', 'contact.tb_city')->findAll()



Подробности:

http://www.yiiframework.com/doc/api/CActiveRecord#with-detail

http://www.yiiframework.com/doc/guide/ru/database.arr (раздел "Выполнение реляционного запроса")


$dataProvider=new CActiveDataProvider('MraLogin', array(

                                                               'pagination' => array('pageSize' => 20),

                                                               'criteria'   => $criteria,

                                                              ));

А у меня данные из таблицы вот так получаются и вот так выводятся :


<?php $this->widget('zii.widgets.CDetailView', array(

	'data'=>$model,

	'attributes'=>array(

		'login_id',

		'login',

		'pass',

		'hash',

		'type_user',

	),

)); ?>

Как мне здесь поступить?

Кажется понял как:


                $criteria = array(

                                    'condition'=> 'type_user=:group',

                                    'params'   => array(':group'=>$_GET['group']),

                                    'with'     => array('contact.tb_region', 'contact.tb_city'),

                                  );

Но зато он теперь ругается на следующее

И теперь я не понимаю как указывать связи а точне что значит foreignKey


'varName'=>array('relationType', 'className', 'foreignKey', ...additional options)



Что я должен указать в этом ключе?

Все разобрался:


      

 'tb_city'   => array(self::BELONGS_TO, 'ConstCity', 'city'),

 'tb_region' => array(self::BELONGS_TO, 'ConstRegion', 'region'),

На добыло тип связи поставить BELONGS_TO

Отлично!