2013-01-09 92 views
1

我正在創建一個包含多個頁面和多個圖像的網站。關係是許多頁面可以有很多圖像。因此,我通常會創建一個名爲page_images的連接表,其中包含page_id和image_id。我還需要連接表中的位置字段,以便可以對每個頁面的圖像進行排序。一對多或多對多?

我一直在看今天的學說和使用Symfony2實體來創建數據庫。我嘗試使用元數據使用多對多關係,但是這爲我創建了僅包含page_id和image_id的連接表。我不知道如何添加位置字段或其他字段,這是可能的嗎?

我假設的替代方法是創建一個從頁表到page_images表以及從images表到page_images表的一對多關係,這意味着我還需要一個PageImage實體類。

有人可以請告知什麼是這種情況下的最佳做法?我一直在尋找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; 

} 

回答

2

您已經有了迴應:你需要有從PageImage實體2間多對一的關係。 然後,您將能夠在此實體中添加額外的字段。

+0

好吧,那麼這是正確的方式是嗎?我正在努力學習Symfony和Doctrine,並希望確保我以正確的方式進行,而不是簡單的方法。是不是真的,如果你做了很多,你不能添加額外的字段到連接表? – user1961082

+0

是的。要添加額外的字段,您正在以正確的方式進行。 –

+0

謝謝你的幫助哥們! – user1961082