【问题标题】:Yii multiple relationsYii 多重关系
【发布时间】:2012-02-16 14:43:37
【问题描述】:

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

  • 游戏(game_id,name,...)
  • 标签 (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

并得到一个错误
关系有什么问题?

【问题讨论】:

    标签: php yii


    【解决方案1】:

    正如您在此处看到的: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')
    

    【讨论】:

    • 在你给我的例子中(在 yiiframework.com),他们使用“角色”模型。在我的情况下是否有必要使用 collections_tags 模型?或者有一些解决方法而不创建新类?
    • 这可能没有必要,但如果有办法,那将是相当困难的,你将不得不挖掘框架的 AR 代码。您可以在文档中找到以下“原理”:“在我们使用 AR 执行关系查询之前,我们需要让 AR 知道一个 AR 类与另一个类是如何相关的”。所以 AR 适用于模型。就是这样。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多