Всем доброго времени суток! Подскажите пожалуйста решение по такой проблеме:
Есть три таблицы:
-
Список СМИ - smi(id,name)
-
Список Стран - country(id,name)
-
Сводная таблица - smi_country(smi_id,country_id)
relations в smi:
'country' => array(self::MANY_MANY, 'country', 'smi_country(smi_id, country_id'),
relations в country:
'smi' => array(self::MANY_MANY, 'smi','smi_country(country_id, smi_id)'),
relations в smi_country:
'smi' => array(self::HAS_MANY, 'smi', 'id'),
'country' => array(self::HAS_MANY, 'country', 'id')
В контроллере получаю список сми:
$criteria=new CDbCriteria(array('with'=>array('country')));
if(isset($_GET['country']))
$criteria->addCondition('country.id='.$_GET['country']);
$dataProvider=new CActiveDataProvider('Smi', array('criteria'=>$criteria));
И в виде, через CListView
$this->widget('zii.widgets.CListView',
array('dataProvider'=>$dataProvider,
'itemView'=>'_view'));
вывожу список сми такого вида:
echo 'Газета:'.$data->name;
echo 'Страна:';
foreach ($data->country as $c) {
echo CHtml::link(CHtml::encode($c->name), array('smi/index','country'=>$c->id));
}
Газета: "Курьер"
Страна: Россия, Украина
Газета: "Премьер"
Страна: Россия
Здесь все хорошо, но когда нужно выбрать СМИ по какой-то одной стране (country=2), то СМИ выводится правильно, но страна у него выводится только та, по которой делали выборку:
Газета: "Курьер"
Страна: Украина
Подскажите, как правильно вывести список стран к каждому СМИ?
То ли нужно делать для country нового dataProvider, то ли можно как-то составить relations? Либо еще как-то?