【问题标题】:Symfony 2.8 : one to many relationshipSymfony 2.8:一对多关系
【发布时间】:2017-10-15 19:20:13
【问题描述】:
我有两张表,Event和Product,一个Event有多个产品,一个产品可以在多个Event中。在这里,我认为这是一个 OneToMany 单向 关系。在创建事件的形式中,我希望在数据库中有可用产品的列表,并将一些产品添加到事件(产品集合)中。
最好的方法是什么?
- 实现单机或
- 顺便实现ManyToMany并创建第三张表EventProducts
谁能帮我选择最好的方法以及如何实施?
【问题讨论】:
标签:
php
forms
symfony
many-to-many
one-to-many
【解决方案1】:
1)实现单机:
在这种情况下,您可以获得活动产品列表:$event->getProducts
但是当你需要通过 $product->getEvent() 从产品实体访问事件时!!!!!!这是不可能的,因为关系是单向的
2) 顺便实现ManyToMany并创建第三张表EventProducts:
解决办法就是这个,创建第三个实体EventProduct
希望对你有帮助
【解决方案3】:
我认为去生成 EventProduct 是一个更好的选择,因为 Event 将与 EventProduct 建立 oneTomany 关系,而 Product 也会与 EventProduct 建立关系。所以 EventPeoduct 加入 Event 和 Product
【解决方案4】:
就我个人而言,我更喜欢添加第三个实体而不是做很多事情,它更易于维护,尤其是当有一天您需要添加另一个字段(例如(订单、创建日期等)时)
【解决方案5】:
最好将 ManyToMany 与 ORM\JoinTable(name="table_name") 一起使用
class Product {
/**
* @ORM\ManyToMany(targetEntity="Event")
* @ORM\JoinTable(name="products_events")
*/
private $events;
.....