我正在尝试实现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;
}
}
答案 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