【问题标题】:How can I relate a Yii Model to itself?如何将 Yii 模型与自身关联起来?
【发布时间】:2012-06-28 15:34:24
【问题描述】:

我有两张桌子:

tags
---
id
name
etc..

tags_synonyms
---
tag_id
syn_id

syn_id 是同义词标签的 id,tag_id 反映了实际使用的“根”标签。同义词的存在只是为标签提供替代拼写/等以引用和查找根标签。 (如果它们应该存储在单独的表中,请纠正我)

所以我在 Yii 中创建了一个模型标签,但我不知道如何设置它的关系。

我想要做的是: $tag->synonyms 和 $tag->root 分别抓取所有同义词和一个根标签。

如何设置这两件事的关系?

【问题讨论】:

  • 一个 tag_synonym 只能是一个 root_tag 的同义词?即标签可以是同义词或根类型,对吗?
  • 到目前为止,我认为这就是它所需要的;一个词要么是带有同义词的词根,要么是带有一个词根的同义词。我想做的是扫描所有单词(根和同义词)的文本,然后只将根单词存储为标签。
  • 那么你已经制作了db表了吗,你有没有想过如何将同一个表(即标签表)中的两个字段关联起来?
  • 我曾计划让它们都与标签中的 id 列相关,但我愿意接受有关如何/应该/如何完成的建议
  • 好的,那么您需要关系功能方面的帮助吗?

标签: mysql yii relational-database


【解决方案1】:

只需查看此链接..了解更多关于 Yii 框架中的关系是如何建立的 http://www.yiiframework.com/doc/blog/1.1/en/post.model#customizing-x-16x-method

关系应该在TagsSynonyms model中声明

public function relations()
  {
    return array(
      'synonymstags' => array(self::BELONGS_TO,'TagsSynonyms','tag_id'),
    );
  }

关系应该在Tags model中声明

  public function relations()
  {
    return array(
      'tags' => array(self::HAS_MANY, 'Tags', 'tag_id'),
    );
  }

【讨论】:

  • 这就是我最初的想法,但我不知道这是否是为此创建另一个模型的最佳答案;似乎我会滥用模型结构只是为了创建从标签到自身的连接
【解决方案2】:

我最终只是在标签表中添加了一个linked_to 根词列,并使用它来引用同义词中的主要词。

【讨论】:

    猜你喜欢
    • 2017-03-23
    • 2016-01-11
    • 1970-01-01
    • 2019-11-24
    • 1970-01-01
    • 2021-08-20
    • 1970-01-01
    • 2021-11-06
    • 1970-01-01
    相关资源
    最近更新 更多