Реляционный запрос

Проблема в реляционном запросе с условием




$criteria=new CDbCriteria;

$criteria->with = array('relation');

$criteria->condition = 't.status>0 AND relation.cid='.$cid;


$pages=new CPagination(Product::model()->count($criteria));

$pages->pageSize=self::PAGE_SIZE;

$pages->applyLimit($criteria); // тут возникает ошибка



в последней строчке из кода выше возникает ошибка


[error] [system.db.CDbCommand] Error in querying SQL: SELECT `t`.`id` AS `t0_c0`, `t`.`photo_id` AS `t0_c1`, `t`.`url` AS `t0_c2`, `t`.`tags` AS `t0_c3`, `t`.`name` AS `t0_c4`, `t`.`description` AS `t0_c5`, `t`.`price` AS `t0_c6`, `t`.`store` AS `t0_c7`, `t`.`type` AS `t0_c8`, `t`.`status` AS `t0_c9` FROM `tbl_products` `t`  WHERE (t.status>-1 AND relation.cid=7) LIMIT 2

та же самая ошибка при выполнении


$criteria->limit = 2;

без применения лимита все работает нормально.

это баг фреймворка или я что-то делаю не так?

Обошел только используя


$criteria->join = 'LEFT JOIN {{catalog_relation}} as relation ON relation.pr_id=t.id';

Связь relation есть в модели?


[error] [system.db.CDbCommand] Error in querying SQL: SELECT `t`.`id` AS `t0_c0`, `t`.`photo_id` AS `t0_c1`, `t`.`url` AS `t0_c2`, `t`.`tags` AS `t0_c3`, `t`.`name` AS `t0_c4`, `t`.`description` AS `t0_c5`, `t`.`price` AS `t0_c6`, `t`.`store` AS `t0_c7`, `t`.`type` AS `t0_c8`, `t`.`status` AS `t0_c9` FROM `tbl_products` `t`  WHERE (t.status>-1 AND relation.cid=7) LIMIT 2

Здесь нет такой таблицы relation.

Еще мне кажется Yii не создаст алиас relation к tbl_relation.

все связи есть, весь код до последней строки работает (все выводит без лимита, нормально сопоставляет таблицы), а при применении лимита появляется такой запрос…

Да, скорее всего баг, сам с этим столкнулся и решил так же написав join руками.

применение лимитов заставляет AR забыть о релейшенах. Явно баг.

Что скажет CORE TEAM ?

Обошел этот баг примерно так:




$criteria=new CDbCriteria;

$criteria->with = array(

	'relation' => array(

		'condition' => 'relation.cid='.$cid,

	),

);

$criteria->condition = 't.status>0';


$pages=new CPagination(Product::model()->count($criteria));

$pages->pageSize=self::PAGE_SIZE;

$pages->applyLimit($criteria);


$oFinder = Product::model();

			

if(isset($criteria->with))

{

	$oFinder = $oFinder->with($criteria->with)->together();

	$criteria->with = NULL;

}


$aProducts = $oFinder->findAll($criteria);



Рабоатет однако! Спасибо.

Но от core team хотелось бы нормального решения на уровне ядра AR.