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 拡張機能を使用しています

于 2013-01-11T16:59:44.147 に答える