0

多くのエンティティを 1 対多として同じエンティティの主キーにマップする必要があります。

簡潔にするために、少し簡略化してみます。

Web サイトまたは iOS アプリに表示される場合、異なる順序で並べる必要があるニュースと製品テーブルがあるとします。将来、他の20以上のテーブルを管理する必要があるため、すべてのテーブルの注文情報(「位置」と呼ばれる)を格納するテーブルを1つだけにしたいと考えています。

簡略化された表は次のとおりです。

 _________
|news     |
 ---------
|id (pk)  |
|title    |
 ---------

 _________
|product  |
 ---------
|id (pk)  |
|name     |
 ---------

 __________
|position  | id + table + target are the composite primary key
 ----------
|id (pk)   | can refer to a news.id or to a product.id depending on table field value
|table(pk) | define if the id refer to a news or to a product
|target(pk)| can be "web" or "ios"
|position  | an integer  
 ----------

3 possible position records could be:

id  - table  - position - target
1      news        1        web
1      news        1        ios
1      product     1        web

ご覧のとおり、同じ ID を 3 回繰り返すことができます。これは少し汚れており、おそらくベスト プラクティスではないことはわかっていますが、テーブルを追加する必要があるたびに (プレス、アーティスト、イベントなど)、多くのテーブルとエンティティの作成を節約できます。私のニーズに合わせて Doctrine2 を使用する唯一の方法は、xxx_position_web と xxx_position_ios テーブルを作成し、将来管理する必要があるすべての新しいテーブルに関連するエンティティを作成することです。

Symfony2 の Doctrine2 エンティティでこのようなものを管理することは可能ですか? 私と非常によく似た状況を説明するリンクを見つけましたhttps://doctrine-orm.readthedocs.org/en/latest/tutorials/composite-primary-keys.html?highlight=composite#identity-through-foreign-entitiesしかし私は自分の状況にそれを適用することができません。

4

2 に答える 2