我有兩個表,事件和產品,一個事件有多個產品,一個產品可以在多個事件。這裏我認爲這是一個OneToMany單向的關係。在創建事件的形式中,我希望獲得數據庫中可用產品的列表,並將一些產品添加到事件(產品集合)中。Symfony 2.8:一對多關係
這樣做的最佳方法是什麼?
- 落實一對多或
- 圍棋的方式來實現多對多,並創建第三表EventProducts
誰能幫我選擇最好的方式,以及如何實現它?
我有兩個表,事件和產品,一個事件有多個產品,一個產品可以在多個事件。這裏我認爲這是一個OneToMany單向的關係。在創建事件的形式中,我希望獲得數據庫中可用產品的列表,並將一些產品添加到事件(產品集合)中。Symfony 2.8:一對多關係
這樣做的最佳方法是什麼?
誰能幫我選擇最好的方式,以及如何實現它?
1實現了一個一對多:
在這種情況下,你可以得到活動產品列表:$事件 - >的getProducts
但是,當你需要通過$產品 - > getEvent從產品實體訪問事件()! !
的解決方案是這一個,創建第三實體EventProduct
希望這樣可以:因爲關係是單向的
2)進入到實現多對多的方式,並創建第三表EventProducts這是不可能的幫助
對我來說合乎邏輯的答案是使用許多一對多的關係,箱橋表,並根據您的需求,您可以使用bidirectional or unidirectional relationship
我覺得去產生EventProduct是一個更好的選擇,這樣的事件會令一對多與EventProduct和產品的關係也將與EventProduct.So EventPeoduct聯合事件和)的關係產品
,最好使用多對多與ORM\JoinTable(name="table_name")
class Product {
/**
* @ORM\ManyToMany(targetEntity="Event")
* @ORM\JoinTable(name="products_events")
*/
private $events;
.....
我個人更喜歡添加而不是做多對多的第三實體它更易於維護尤其是當有一天,你將需要添加像另一個字段(順序,創建日期等)