Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Yii multiple relations

Tags:

php

yii

In my database I have 5 tables:

  • game(game_id,name,...)
  • tag (tag_id,name,...)
  • collection (coll_id,name,...)
  • collections_tags (id,coll_id,tag_id)
  • game_tag (id,game_id,tag_id)

Every game has many tags, collection has many tags. If i take a collection, I can find its games using the collection's tags.

I'm trying to perform this task with yii relations:

//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')

Then I get a $collection and try this:

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

and get an error
What is wrong in the relations?

like image 278
lvil Avatar asked Feb 16 '12 14:02

lvil


1 Answers

As you may see here: http://www.yiiframework.com/doc/guide/1.1/en/database.arr#relational-query-with-through, the correct declaration of that relation would be as follows:

 'games'=>array(self::HAS_MANY, 'Game', array('tag_id'=>'id'), 'through'=>'tags')
like image 118
Alfredo Castaneda Garcia Avatar answered Oct 17 '22 15:10

Alfredo Castaneda Garcia