我有一个定义继承的实体,如下所示:
* @DiscriminatorColumn(name="type", type="string")
* @DiscriminatorMap({"text" = "TextAttribute", "boolean" = "BooleanAttribute", "numeric" = "NumericAttribute", "date" = "DateAttribute"})
Run Code Online (Sandbox Code Playgroud)
我想知道是否有可能为田地'类型'吸气?我知道我可以使用instanceof(在大多数情况下这就是我正在做的事情)但是很少有场景,$ item-> getType()会让我的生活变得如此简单.
使用这些类,您如何将"Person"的记录更改为"Employee".
/**
* @Entity
* @InheritanceType("SINGLE_TABLE")
* @DiscriminatorColumn(name="discr", type="string")
* @DiscriminatorMap({"person" = "Person", "employee" = "Employee"})
*/
class Person
{
// ...
}
/**
* @Entity
*/
class Employee extends Person
{
// ...
}
Run Code Online (Sandbox Code Playgroud)
我尝试更改鉴别器列的值,但我无法访问它.我还尝试创建一个'Employee'实例并手动复制数据,但这不适用于自动递增id.它只是作为新记录添加而不是更新现有记录.
我是否需要编写自定义的SQL查询,或者我在做其他根本错误的事情?
我有一个继承层次结构,其中包含一个基本的Employee实体和一些用于特定员工类型的后代实体.我需要能够将基础Employee实体转换为更具体的实体(例如TemporaryEmployee),并从更具体的类型转换回基本类型(例如,如果员工不再是"临时"的话,那么我希望该实例只是持久化为Employee.在DB中,这只是在表中为特定子类添加或删除一行的问题.(我每个类都使用表.)虽然我没有看到如何使用EF调用.