MANY_MANY auf sich selbst

Hi,

es geht um folgendes.

Ich versuche eine MANY_MANY - Beziehung auf die selber Tabelle durchzuführen, jedoch ohne Erfolg

Meine Tabelle

words

id

baseform

synonyms

wordsId

synonymId

Mein Model (Words.php) sieht folgender Maßen aus


public function relations()

{

	return array(

		'Synonym'	=> array(self::MANY_MANY, 'Words', 'Synonyms(wordsId, synonymId)'.

			'together'	=> true,

			'joinType'	=> 'INNER JOIN',

		),

	);

}

jedoch wie muss die relations() - Methode in synonyms erstellen??


public function relations()

{

	return array(

	);

}

Für MANY_MANY relations musst du nicht zwingend ein AR für die Koppeltabelle anlegen, geschweige denn relations() dort definieren. Stimmt denn dein Tabellenname "Synonyms"?

Laut http://www.yiiframework.com/forum/index.php?/topic/3983-many-many-tutorial/page__view__findpost__p__21424 muss ich auch für die Koppeltabelle ein Model erstellen.

ja synonyms ist der Name der Koppeltabelle.

Das AR brauchst du nur, um Einträge in dieser Koppeltabelle bequem anzulegen zu ändern oder zu löschen. Für die Definition der Relation ist es aber nicht nötig. Du musst lediglich den Tabellennamen angeben:

synonyms(wordsId, synonymId)

Prüf mal die Schreibweise deines Tabellennamens. Groß-/Kleinschreibung evtl.?

Schreibweise ist soweit korrekt.

Ich erhalte außerdem folgende Fehlermeldung




CDbException

Description


The relation "synonyms" in active record class "synonyms" is specified with an incomplete foreign key. The foreign key must consist of columns referencing both joining tables.