php – 在doctrine中扩展实体类
发布时间:2020-12-13 22:26:12 所属栏目:PHP教程 来源:网络整理
导读:我正在尝试扩展一个用作教义实体的类,但由于某种原因我不断收到错误: There is no column with name ‘location_id’ on table ‘admin_subdivisions’ 当我说扩展时,我的意思是在PHP级别而不是数据库级别.我只是想创建另一个表,带有一个额外的列.我有几个
我正在尝试扩展一个用作教义实体的类,但由于某种原因我不断收到错误:
当我说扩展时,我的意思是在PHP级别而不是数据库级别.我只是想创建另一个表,带有一个额外的列.我有几个实体扩展了以下抽象类 abstract class LocationProxy { /** * @ORMId * @ORMOneToOne(targetEntity="Location",cascade={"ALL"},fetch="LAZY") * @ORMJoinColumn(name="location_id",referencedColumnName="location_id",nullable=false) * * @var Location */ protected $location; } 这些二级课程都没有给我任何问题.现在,我想扩展这个二级课程 /** * @ORMEntity() * @ORMTable(name="admin_divisions") */ class AdminDivision extends LocationProxy { } 有了这个 /** * @ORMEntity() * @ORMTable(name="admin_subdivisions") */ class AdminSubDivision extends AdminDivision { } 但是,它会产生错误.谁能指出我做错了什么? 这是Location类定义 /** * @ORMEntity() * @ORMTable(name="locations") */ class Location { /** * @ORMId * @ORMColumn(name="location_id",type="integer",options={"unsigned"=true}) * * @var int */ private $id; } 解决方法
您必须指定继承类型,以便doctrine知道如何为子类构建表:
http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/inheritance-mapping.html#mapped-superclasses
在这种情况下,您需要将以下注释添加到抽象LocationProxy类: @ORMEntity @ORMInheritanceType("JOINED") @ORMDiscriminatorColumn(name="discr",type="string") 或者选择不同的继承类型 所以整个班级看起来像这样: /** * @ORMEntity * @ORMInheritanceType("JOINED") * @ORMDiscriminatorColumn(name="discr",type="string") */ abstract class LocationProxy { /** * @ORMId * @ORMOneToOne(targetEntity="DeGregblogReceiptsLocation",nullable=false) * * @var Location */ protected $location; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |