gpt4 book ai didi

doctrine-orm - Doctrine 类表继承方法

转载 作者:行者123 更新时间:2023-12-04 04:52:55 27 4
gpt4 key购买 nike

我使用两个类:

namespace Test;
use Doctrine\ORM\Mapping as ORM;

/**
*@Table()
*@InheritanceType("Joined")
*@DiscriminatorMap({"baseclass"="BaseClass", "subclass"="SubClass"}
*@Entity
*/
class BaseClass{

/**
*@Column(name="id", type="integer")
*@Id
*@GeneratedValue(strategy="IDENTITY")
*/
private $id;
}


namespace Test;
use Doctrine\ORM\Mapping as ORM;

/**
*@Table()
*@Entity
*/
class SubClass extends BaseClass{

/**
* @Column(name="v", type="string", nullable="false")
*/
private $v;
}

我无法保留 SubClassObject。我收到以下错误消息:

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'dtype' in 'field list'

我是 Doctrine 和 ORM 的新手,所以我需要一些帮助。

编辑:使用 cli orm:create-schema:tool 后,基类有一个数据类型字段。是否可以在没有该字段的情况下创建实体,该字段代表什么?

最佳答案

数据类型字段是默认值 @DiscriminatorColumn .您可以按如下方式更改列名称:

@InheritanceType("Joined")
@DiscriminatorColumn(name="[CHANGE]", type="string")
@DiscriminatorMap({"baseclass"="BaseClass", "subclass"="SubClass"}

inheritance hierarchy 中无法跳过此字段。该字段将类型映射到适当的类。在您的示例中:类型子类指的是 SubClass 类。

关于doctrine-orm - Doctrine 类表继承方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8152286/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com