我遇到类表继承问题。我尝试添加一个类AtmosphereStudentRequest
,它扩展了另一个ServiceRequest
。我收到以下错误:
实体'Entities \ ServiceRequest \ AtmosphereStudentRequest'必须是'Entities \ ServiceRequest'的描述符映射的一部分才能在继承层次中正确映射。或者,您可以将“Entities \ ServiceRequest \ AtmosphereStudentRequest”设为抽象类,以避免发生此异常。
ServiceRequest
中存在以下表继承元数据。注意我正在添加一个类,以及之前存在的其他类,并且工作正常。
/**
* @Entity(repositoryClass="Repositories\ServiceRequestRepository")
* @InheritanceType("JOINED")
* @DiscriminatorColumn(name="subtype", type="string")
* @DiscriminatorMap({"service_request" = "ServiceRequest", "atmosphere_student_requests" = "\Entities\ServiceRequest\AtmosphereStudentRequest", "atmosphere_request" = "\Entities\ServiceRequest\AtmosphereRequest", ... })
* @HasLifecycleCallbacks
* @Table(name="service_requests",indexes={@index(name="service_request_status_idx",
* columns={"status"})})
*/
我挖出错误的代码并验证了ServiceRequest
类在其鉴别器映射列表中没有 AtmosphereStudentRequest
。我还注意到我对DiscriminatorMap注释的更改对我正在打印的映射列表没有影响。缓存罪魁祸首?我是否需要运行命令来更新新注释?
我是php的新手,也是php的web dev。我使用控制台学说工具来检查映射是否正确。当我跑步时,php doctrine orm:schema:update
。我得到以下输出:
...
Array
(
[0] => Entities\ServiceRequest
...
[2] => Entities\ServiceRequest\AtmosphereStudentRequest
[3] => Entities\ServiceRequest\AtmosphereRequest
...
)
...
Nothing to update - your database is already in sync with the current entity metadata.
我正在使用Doctrine 1.2