Symfony 2.8:一对多关系

Symfony 2.8 : one to many relationship

我有两个table,EventProduct,一个Event有多个产品,一个产品可以在多个事件。这里我认为是OneToMany Unidirectional关系。以事件创建的形式,我想在数据库中获得可用产品的列表,并将一些产品添加到事件(产品集合)中。

最好的方法是什么?


  1. 实施onetomany或
  2. 继续实施 ManyToMany 并创建第三个 table EventProducts

谁能帮我选择最好的方法以及如何实施?

对我来说合乎逻辑的答案是使用多对多关系和 crate 桥 table,并且根据您的需要,您可以使用 bidirectional or unidirectional relationship

我认为生成 EventProduct 是更好的选择,因为 Event 将与 EventProduct 建立 oneTomany 关系,Product 也会与 EventProduct.So EventPeoduct 建立关系,加入 Event 和 Product

最好将 ManyToMany 与 ORM\JoinTable(name="table_name")

一起使用
class Product {

/**
* @ORM\ManyToMany(targetEntity="Event")
* @ORM\JoinTable(name="products_events")
*/
private $events;

.....

1)实现onetomany:

在这种情况下,您可以获得活动产品列表:$event->getProducts

但是当您需要通过 $product->getEvent() 从产品实体访问事件时 !!!!!!这是不可能的,因为关系是单向的

2) 继续实施 ManyToMany 并创建第三个 table EventProducts :

解决方案就是这个,创建第​​三个实体EventProduct

希望对您有所帮助

就我个人而言,我更喜欢添加第三个实体而不是做 manytomany,它更易于维护,尤其是当有一天您需要添加其他字段(如(订单、创建日期等)时)