【问题标题】:Suitable Doctrine relational mapping合适的 Doctrine 关系映射
【发布时间】:2014-01-14 12:10:34
【问题描述】:

我有两个 Doctrine 实体:OrdersOrderStatus
一个 Orders 记录可以处理一种状态(例如,processingprocessedconfirmationinactive 或其他任何东西)。
但是 OrderStatus 记录可能会处理许多不同的订单。

我应该使用哪种最佳映射? 将one-to-one unidirectional 用于Ordersmany-to-many unidirectional 用于OrderStatus 是否是正确的方法?

我使用 YML 映射配置。

提前谢谢你。

【问题讨论】:

    标签: symfony doctrine-orm many-to-many one-to-one


    【解决方案1】:

    如果您的 Orders 实体可以有 1 个状态,并且 OrderStatus 可以有多个 Orders,那么这是基本的一对多。

    OrderStatus:
      type: entity
      oneToMany:
        orders:
          targetEntity: Order
          mappedBy: orderStatus
    
    Order:
      type: entity
      manyToOne:
        orderStatus:
          targetEntity: OrderStatus
          inversedBy: orders
          joinColumn:
            name: orderStatus_id
            referencedColumnName: id
    

    我建议您将实体命名为 Order,而不是 Orders。由于 symfony 可以发挥其神奇的多元化和 getter-setter 的作用。我认为你拥有它的方式,方法和映射可能存在错误。

    另外,请查看 docs 以了解教义映射

    【讨论】:

    • 是的,我尝试通过命令行创建订单实体:php app/console generate:doctrine:entity --with-repository --entity=AcmeMyBundle:Order 但这是一个错误,因为Order 是保留字。无论如何,谢谢你的回答!
    猜你喜欢
    • 2013-09-02
    • 2016-01-26
    • 1970-01-01
    • 1970-01-01
    • 2021-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多