【问题标题】:Symfony 2.8 : one to many relationshipSymfony 2.8:一对多关系
【发布时间】:2017-10-15 19:20:13
【问题描述】:

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

最好的方法是什么?


  1. 实现单机或
  2. 顺便实现ManyToMany并创建第三张表EventProducts

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

【问题讨论】:

    标签: php forms symfony many-to-many one-to-many


    【解决方案1】:

    1)实现单机:

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

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

    2) 顺便实现ManyToMany并创建第三张表EventProducts:

    解决办法就是这个,创建第​​三个实体EventProduct

    希望对你有帮助

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案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;
            
            .....
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2015-08-12
              • 2011-01-22
              • 2017-09-25
              • 2018-01-22
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多