Yii多重关系

时间:2012-02-16 14:43:38

标签: php yii

在我的数据库中,我有5个表:

  • 游戏(game_id,姓名,...)
  • tag(tag_id,name,...)
  • 集合(coll_id,name,...)
  • collections_tags(id,coll_id,tag_id)
  • game_tag(id,game_id,tag_id)

每个游戏都有很多标签,集合中有很多标签。如果我收集一个集合,我可以使用该集合的标签找到它的游戏。

我正在尝试使用yii关系执行此任务:

//in Collection's relations:
 'tags'=>array(self::MANY_MANY, 'Tag',  'collections_tags(coll_id,tag_id)'),  
 'games'=>array(self::HAS_MANY, 'Game','tag_id', 'through'=>'tags')

然后我得到一个$ collection并试试这个:

 echo "collection ".$collection->name.": (id=".$collection->coll_id.") has ".count($collection->tags)."tags\n";
echo count($coll->games);//error here

并收到错误
关系有什么问题?

1 个答案:

答案 0 :(得分:6)

正如您在此处所见:http://www.yiiframework.com/doc/guide/1.1/en/database.arr#relational-query-with-through,该关系的正确声明如下:

 'games'=>array(self::HAS_MANY, 'Game', array('tag_id'=>'id'), 'through'=>'tags')