没有为Abstract Class指定标识符/主键

时间:2017-05-16 10:35:06

标签: php symfony doctrine-orm doctrine abstract-class

我正在尝试实现this映射策略。我用id和其他字段定义了抽象类。但我不断收到以下错误:

  

没有为实体指定标识符/主键" AppBundle \ Entity \ AbstractItem"。每个实体必须具有标识符/主键。 (500内部服务器错误)

这是我的班级。如您所见,指定了唯一标识符$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;
     }
 }

2 个答案:

答案 0 :(得分:0)

此抽象类不应该是数据库中的实际实体。

尝试使用@ORM \ MappedSuperClass而不是@ORM \ Entity

答案 1 :(得分:0)

请试试这个:

/**
 * @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