一对多或多对多?

时间:2013-01-09 21:11:49

标签: join symfony orm doctrine relationship

我正在创建一个包含多个页面和多个图像的网站。关系是许多页面可以有很多图像。因此,我通常会创建一个名为page_images的连接表,其中包含page_id和image_id。我还需要在连接表中的位置字段,以便可以订购每个页面的图像。

我今天一直在关注Doctrine并使用Symfony2实体来创建数据库。我尝试使用元数据使用多对多关系,但是这为我创建了仅包含page_id和image_id的连接表。我不确定如何添加位置字段或任何其他字段,这可能吗?

我假设的另一种方法是创建从页表到page_images表以及从images表到page_images表的一对多关系,这意味着我还需要一个PageImage Entity类。

有人可以建议这种情况的最佳做法是什么?我一直在查看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;

}

1 个答案:

答案 0 :(得分:2)

您已经有了回复:您需要从PageImage实体获得2个ManyToOne关系。 然后,您将能够在此实体中添加额外的字段。