一般来说,Yii 并不是为了处理“三表关系”而构建的。话虽这么说,你should仍然可以向您的关系查询添加条件(),我认为问题只是您没有加入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')
),
);
我没有测试任何代码,哪怕是一点点,但我做过类似的事情,所以它should工作,原则上。 :) 祝你好运!