处理实体中的Doctrine2映射/关系

时间:2014-09-02 05:22:06

标签: php symfony orm doctrine-orm mapping

我正在处理三个实体之间的Doctrine映射,并且有些疑惑来找我。实体为NaturalLegalOrders,其中一个Natural可以有多个Orders,一个Legal可以有多个Orders太。所以在Natural实体中我与OneToManyOrders双向关系,这就是代码:

/**
 * @ORM\OneToMany(targetEntity="Orders", mappedBy="natural")
 */
protected $orders;

public function __construct()
{
    $this->orders = new ArrayCollection();
}

然后在Orders实体我有这个:

/**
 * @ManyToOne(targetEntity="NaturalPerson", inversedBy="orders")
 * @JoinColumn(name="natural_id", referencedColumnName="id")
 **/
protected $natural;

以下是我的疑惑:

  • 由于我有第三个实体:Legal我应该遵循相同的程序,以便在LegalOrders之间建立关系吗?
  • 由于Orders属于NaturalLegal而不是两者都属于空列,这是不是严重不一致?
  • 我如何保存Orders?我应首先刷新并保留Orders,然后设置LegalNatural的对象,以便方法setOrder()位于NaturalLegal对吗?

希望任何人都可以帮助我理解这一点,并提前感谢

提案数据库模型

这是我现在所拥有的数据库模型,可以更改

enter image description here

1 个答案:

答案 0 :(得分:1)

  

由于我有第三个实体:法律我应该遵循相同的程序,以便在法律和订单之间建立关系吗?

是的,它有效。

  

由于订单属于自然或合法而不是两者都属于空列,这是不是一个严重的不一致?

严重?没有!也许是一个小的,但这很简单,也更容易维护,所以是KISS。

  

我如何保存订单?我应首先刷新并保持订单,然后将对象设置为Legal或Natural,这样方法setOrder()应该是自然和​​法律权利吗?

只需要持久性,您可以在最后清除所有内容。