Symfony 2.8:一对多关系
Symfony 2.8 : one to many relationship
我有两个table,Event和Product,一个Event有多个产品,一个产品可以在多个事件。这里我认为是OneToMany Unidirectional关系。以事件创建的形式,我想在数据库中获得可用产品的列表,并将一些产品添加到事件(产品集合)中。
最好的方法是什么?
- 实施onetomany或
- 继续实施 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,它更易于维护,尤其是当有一天您需要添加其他字段(如(订单、创建日期等)时)
我有两个table,Event和Product,一个Event有多个产品,一个产品可以在多个事件。这里我认为是OneToMany Unidirectional关系。以事件创建的形式,我想在数据库中获得可用产品的列表,并将一些产品添加到事件(产品集合)中。
最好的方法是什么?
- 实施onetomany或
- 继续实施 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,它更易于维护,尤其是当有一天您需要添加其他字段(如(订单、创建日期等)时)