0

我无法保存多对多关系。我的数据库架构如下:-

articles
- id (PK)
- content

tags
- id (PK)
- name

article_tag
- article_id (PK)
- tag_id (PK)

我的文章模型具有以下关系:-

'tags' => array(self::MANY_MANY, 'Tag', 'article_tag(tag_id, article_id)'),

但是,当我看到使用 Yii 行为时,我收到以下错误:-

Table "tags" does not have a column named "article_tag(tag_id, article_id)".

我已经完成了从模式到关系的所有事情,但我似乎无法找出问题所在。我也尝试过使用其他扩展,但它们似乎都没有保存到 m:n 表中。

我在这里错过了什么吗?

附加信息

这是我的 CManyManyRelation 对象;foreignKey 看起来不正确。

CManyManyRelation Object ( [limit] => -1 [offset] => -1 [index] => [through] => [joinType] => LEFT OUTER JOIN [on] => [alias] => [with] => Array ( ) [together] => [scopes] => [name] => tags [className] => Tag [foreignKey] => restaurant_tag(restaurant_id, tag_id) [select] => * [condition] => [params] => Array ( ) [group] => [join] => [having] => [order] => [_e:CComponent:private] => [_m:CComponent:private] => )
4

2 回答 2

2

在类的多对多关系中,Article您应该首先放置文章的 id,然后是标签的 id:

'tags' => array(self::MANY_MANY, 'Tag', 'article_tag(article_id, tag_id)'),

然后在课堂上Tag你应该有:

'articles' => array(self::MANY_MANY, 'Article', 'article_tag(tag_id, article_id)'),

编辑:我的错我没有意识到它正在保存导致问题的相关模型。Yii 中没有内置的保存相关记录的可能性

对我来说,保存相关模型的最佳解决方案是扩展activerecord-relation-behavior。该扩展将处理所有的 HAS_MANY 和 MANY_MANY 关系。

于 2013-01-11T16:22:16.053 回答
0

我一直在使用 yii-manymanyactiverecord 扩展来帮助简化流程,你可以在这里找到它:http ://www.yiiframework.com/extension/yii-manymanyactiverecord/

于 2013-01-11T16:59:44.147 回答