Php 没有为抽象类指定标识符/主键
我正在尝试实施映射策略。我用id和其他字段定义了抽象类。但我一直得到以下错误: 没有为实体“AppBundle\Entity\AbstractItem”指定标识符/主键。每个实体必须有一个标识符/主键。(500内部服务器错误) 这是我的课。如您所见,指定了唯一标识符Php 没有为抽象类指定标识符/主键,php,symfony,doctrine-orm,doctrine,abstract-class,Php,Symfony,Doctrine Orm,Doctrine,Abstract Class,我正在尝试实施映射策略。我用id和其他字段定义了抽象类。但我一直得到以下错误: 没有为实体“AppBundle\Entity\AbstractItem”指定标识符/主键。每个实体必须有一个标识符/主键。(500内部服务器错误) 这是我的课。如您所见,指定了唯一标识符$id use Doctrine\ORM\Mapping as ORM; /** * @ORM\Entity * @ORM\InheritanceType("JOINED") * @ORM\Discriminator
$id
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\InheritanceType("JOINED")
* @ORM\DiscriminatorColumn(name="type", type="string")
* @ORM\DiscriminatorMap({"post" = "Post", "group" = "Group"})
*/
class AbstractItem
{
/**
* @var int
*
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var \DateTime
*/
protected $published;
protected $object;
protected $target;
/**
* @return mixed
*/
public function getId()
{
return $this->id;
}
}
这个抽象类不应该是数据库中的实际实体 尝试放置@ORM\MappedSuperClass而不是@ORM\Entity请尝试以下操作:
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
与此相反:
/**
* @var int
*
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
您需要在注释中指定列id您是否尝试将
$id
的可见性设置为受保护的
?条令使用映射超类的概念来处理抽象实体类:@JakubMatczak它没有帮助。我仍然有相同的错误现在我得到了“[Doctrine\ORM\Mapping\MappingException]不支持在映射的超类上定义继承信息”`Error你真的需要InheritanceType和它下面的东西吗?我不明白itI的目的是什么我试图实施这种映射策略: