Yii多对多的节约问题

时间:2013-01-11 16:14:23

标签: yii yii-extensions

我在保存多对多关系方面遇到了麻烦。我的数据库架构如下: -

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] => )

2 个答案:

答案 0 :(得分:2)

Article类的Many-Many关系中,您应首先放置文章的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关系。

答案 1 :(得分:0)

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