也许已有关于此主题的答案,但我找不到任何信息。如果已经有答案,请发布任何链接。
我的问题是:
我使用Symfony 2.5和doctrine 2
我遇到的一个常见问题是我有一个实体,我想要持久化到数据库中的不同表。为此,我通常创建一个超类,并将其扩展为两个具体实体,我将其保存到数据库中。
现在我有两个派生自同一基类的实体。是否可以从一个转换为另一个。当然,我必须将它们分别保存到数据库中。
一个例子。我有两个类:“引用”和“顺序”基本相同并扩展超类“项目”
/**
* @ORM\MappedSuperclass
*/
abstract class project {
/**
* @ORM\Column(type="text", nullable=true)
*/
private $description;
/**
* @ORM\ManyToOne(targetEntity="Bundle\Customer")
*/
private $customer;
/**
* @ORM\ManyToOne(targetEntity="Bundle\CustomerContact")
*/
private $customercontact;
... (getters/setters etc.)
}
class quote extends project { ... }
class order extends project { ... }
现在一旦确认报价,我想将其“转换”为订单并保留所有基础数据(存储在“项目”部分中)。另外我想保留报价本身,所以我想从报价创建一个新订单,而不是直接使用“项目”,只需在那里设置一个状态。
当然我可以写一个构造函数或者其他东西,但我正在寻找克隆对象部分的方法。
也许还有一种替代方法,即不扩展类,但“class”-part在类本身中使用。不确定,但在我看来,很多人已经遇到过这样的问题,并且可能会出现这种情况的智能解决方案。
如果适用,我也很满意任何文档链接。