Может торможу конечно, но…
в модели Item
public function relations()
{
return array(
'fotos'=>array(self::HAS_MANY, 'Fotos', 'itemID'),
'categories'=>array(self::MANY_MANY, 'Category', 'ItemCategory(itemID, categoryID)',
),
);
}
хочу вывести записи по конкретной категории $catid:
$withOption = array();
$withOption['categories']['alias']='categories';
$withOption['categories']['condition']="??.id='{$catid}'";
$criteria=new CDbCriteria;
$criteria->select = array('id','name');
$itemList=Item::model()->with($withOption)->findAll($criteria);
получаю полный список item безотносительно к $catid
запрос SQL выглядит так:
SELECT Item
.id
AS t0_c0
, categories.id
AS t1_c0
, categories.name
AS t1_c1
, categories.description
AS t1_c2
, categories.is_visible
AS t1_c3
FROM Item
LEFT OUTER JOIN ItemCategory
categories_categories ON (Item
.id
=categories_categories.itemID
) LEFT OUTER JOIN Category
categories ON (categories.id
=categories_categories.categoryID
) AND (categories.id='3') WHERE (Item
.id
IN (2, 30, 31, 32, 33, 34, 35))
и результат такой:
хотя я надеялся увидеть такой:
что я делаю неправильно?