答案 0 :(得分:0)
一般来说,Yii不是为了处理“三表关系”而构建的。话虽这么说,你应该仍然能够为你的关系查询添加一个condition(),我认为问题只是你没有加入item_meta1
表。你可以这两种方式:
1)为你的关系添加一个JOIN子句:
return array(
'categories'=>array(self::MANY_MANY, 'ItemCategory',
'item_cat_relation(item_id, cat_id)',
'join'=>'JOIN item_meta1 ON categories.cat_of_type=item_meta1.item_type_id'
),
);
1)为你的关系添加一个WITH子句(假设你有另一个表设置的关系):
return array(
'itemMeta'=>array(self::HAS_MANY, 'ItemMeta','item_type_id'), // I probably don't have this quite right, but you should get the idea
'categories'=>array(self::MANY_MANY, 'ItemCategory',
'item_cat_relation(item_id, cat_id)',
'with'=>'itemMeta',
'condition'=>'categories.cat_of_type=itemMeta.item_type_id')
),
);
我没有测试任何代码甚至一点点,但我做了类似的事情,所以应该原则上工作。祝你好运!