YiiFramework Сложный sql запрос, статистика данных

webplus

Новичок
Здравствуйте!
У меня есть таблица catalog - в ней id, name.
Есть таблица vacancy - в ней id и еще текстовые поля.
И есть еще таблица tbl_vacancy_catalog в ней vacancy_id, catalog_id
И еще есть таблица tbl_vacancy_city в ней vacancy_id, city_id

Мне нужно вывести данные из таблицы catalog с подсчетом количества вакансий в каждой из категорий и указанным ID города.

В моделе CActiveRecord я добавляю:
Код:
    public function relations() {
        return array(
            'vacancyCount'=>array(self::STAT, 'Vacancy', 'tbl_vacancy_catalog(catalog_id,vacancy_id)'),
        );
    }
Но как мне привязать еще таблицу tbl_vacancy_city связать в ней tbl_vacancy_city.vacancy_id с таблицей tbl_vacancy_catalog.vacancy_id и добавить условие tbl_vacancy_city.city_id=2
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
AR хорош для простых запросов, в твоем случае лучше сделать отдельный класс, и в нем сделать получение данных обычным запросом.
 

webplus

Новичок
Сделал так:
в модели Catalog
Код:
    public function afterFind()
    {    $criteria=new CDbCriteria;
       
        $criteria->condition='catalog_id=:catalog_id ';
        $criteria->condition.='and vacancy_city.city_id=4';
        $criteria->with = array('vacancy_city');
        $criteria->params=array(':catalog_id'=>$this->id);
        $this->vacancyCount = Vacancy_catalog::model()->count($criteria);
    }
а в модели Vacancy_catalog

Код:
    public function relations() {
        return array(
            'vacancy_city'=>array(self::HAS_MANY, 'Vacancy_city',array('vacancy_id'=>'vacancy_id')),

        );
    }
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
и получил дополнительный запрос на каждую строчку результата при каждом вызове Catalog::findAll(), даже когда vacancyCount не нужен
 
Сверху