複数のページと複数の画像を含むWebサイトを作成しています。関係は、多くのページが多くの画像を持つことができるということです。したがって、私は通常、page_idとimage_idを含むpage_imagesという結合テーブルを作成します。また、各ページの画像を注文できるように、結合テーブルに位置フィールドが必要です。
私は今日Doctrineを見ていて、Symfony2エンティティを使用してデータベースを作成しています。メタデータを使用して多対多の関係を使用しようとしましたが、これにより、page_idとimage_idのみで構成される結合テーブルが作成されました。位置フィールドやその他のフィールドを追加する方法がわかりませんでしたが、それは可能ですか?
私が想定する代替案は、pageテーブルからpage_imagesテーブルへ、またimagesテーブルからpage_imagesテーブルへの1対多の関係を作成することです。つまり、PageImageEntityクラスも必要になります。
誰かがこのシナリオのベストプラクティスを教えてもらえますか?私はhttp://docs.doctrine-project.org/en/latest/reference/working-with-associations.htmlを見てきましたが、結合テーブルにフィールドを追加できるかどうかについてはドキュメントに記載されていません。
より詳しい情報:
class Image {
/**
*
* @ORM\OneToMany(targetEntity="PageImage", mappedBy="image")
*/
private $page_images;
}
class Page {
/**
*
* @ORM\OneToMany(targetEntity="PageImage", mappedBy="page")
*/
private $page_images;
}
class PageImage {
/**
* @var integer
*
* @ORM\ManyToOne(targetEntity="Page", inversedBy="page_images")
* @ORM\JoinColumn(name="page_id", referencedColumnName="id")
*/
private $page;
}