我正在处理三个实体之间的Doctrine映射,并且有些疑惑来找我。实体为Natural
,Legal
和Orders
,其中一个Natural
可以有多个Orders
,一个Legal
可以有多个Orders
太。所以在Natural
实体中我与OneToMany
有Orders
双向关系,这就是代码:
/**
* @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
我应该遵循相同的程序,以便在Legal
和Orders
之间建立关系吗?Orders
属于Natural
或Legal
而不是两者都属于空列,这是不是严重不一致?Orders
?我应首先刷新并保留Orders
,然后设置Legal
或Natural
的对象,以便方法setOrder()
位于Natural
和Legal
对吗?希望任何人都可以帮助我理解这一点,并提前感谢
提案数据库模型
这是我现在所拥有的数据库模型,可以更改
答案 0 :(得分:1)
由于我有第三个实体:法律我应该遵循相同的程序,以便在法律和订单之间建立关系吗?
是的,它有效。
由于订单属于自然或合法而不是两者都属于空列,这是不是一个严重的不一致?
严重?没有!也许是一个小的,但这很简单,也更容易维护,所以是KISS。
我如何保存订单?我应首先刷新并保持订单,然后将对象设置为Legal或Natural,这样方法setOrder()应该是自然和法律权利吗?
只需要持久性,您可以在最后清除所有内容。