melwin
(Chernobl)
1
У меня следующая структура таблиц.
Имеется таблица логинов и связаная с не таблица контактов
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 сделать такую связь или лучше не стои?
rosko
(A)
2
Нужно правильно составить запрос:
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 (раздел "Выполнение реляционного запроса")
melwin
(Chernobl)
3
$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',
),
)); ?>
Как мне здесь поступить?
melwin
(Chernobl)
4
Кажется понял как:
$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)
Что я должен указать в этом ключе?
melwin
(Chernobl)
5
Все разобрался:
'tb_city' => array(self::BELONGS_TO, 'ConstCity', 'city'),
'tb_region' => array(self::BELONGS_TO, 'ConstRegion', 'region'),
На добыло тип связи поставить BELONGS_TO