2011-10-21 8 views

答えて

0

結合表は、m:n関係にのみ必要です。

+0

ありがとうmeze。ドキュメントは結合テーブルとの1:mの関係しか示していないので、私は不思議に思っていました。 –

+0

どのバージョンですか? doctrine2の[documentation](http://www.doctrine-project.org/docs/orm/2.0/en/reference/association-mapping.html#many-to-one-unidirectional)には2つのテーブルしかない2つの例が示されています: – meze

+0

ここでは、特に5.9節を見ていたリンクです。 http://www.doctrine-project.org/docs/orm/2.0/en/reference/association-mapping.html#one-to-many-unidirectional-with-join-table –

4

単方向であるか双方向であるかによって異なります。

単方向一対多のは、Javaの休止状態から来た「イデオロギー」の理由で、テーブルを結合のみによって行うことができます。

http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/association-mapping.html#one-to-many-unidirectional-with-join-table

あなたは多くの製品を持っているカテゴリーを持って想像して、 単方向の関係が必要です。つまり、カテゴリは多くの製品について知っていますが、製品はカテゴリを知らないということです。

'category_id'フィールドをProductテーブルに入れると、カテゴリに接続されているという事実を製品テーブルに認識させます。そしてProductテーブルを変更せずにこの関係を削除することはできません。つまり、本当に単方向ではありません。

ただし、カテゴリと製品の関係を別の結合テーブルに保存しておけば、削除するだけで製品が何か変更されたことに気づかないことさえあります。