在Yii中创建三个以上表的关系

时间:2011-04-18 12:26:33

标签: php yii

1 个答案:

答案 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')
  ),
);

我没有测试任何代码甚至一点点,但我做了类似的事情,所以应该原则上工作。祝你好运!