Пол дня бился) Я понимаю, что можно запрос сделать SQL. И я его написал:
SELECT
DISTINCT pavT.name
FROM
Buildings AS b
JOIN Pavilions AS p ON p.building_id = b.id
JOIN PavilionsTypes AS pt ON p.id = pt.pavilion_id
JOIN PavTypes AS pavT ON pt.type_id = pavT.id
AND b.id = 1
Но хочется сделать именно через отношения (relation)
Задача в том, что я обращаюсь к одному Building и получаю все Типы товаров, которые там продаются.
У меня есть
Buildings (строения), которые имеют много
Pavilions (павильоны). У каждого павильона может быть много
PavTypes (Типы продаваемых там товаров), через таблицу
PavilionsTypes (
MANY_MANY)
class Buildings extends CActiveRecord
{
public function relations()
{
return array(
'pavilions' => array(self::HAS_MANY, 'Pavilions', 'building_id'), //тут все очевидно
'actualPavTypes' => array(self::HAS_MANY, 'PavTypes', 'building_id', 'through' => 'pavilions'),
);
}
}
Т.е. в связи
actualPavTypes, я ожидаю получить пачку
PavTypes