Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 条令表继承-未为实体指定标识符/主键_Postgresql_Symfony_Doctrine Orm - Fatal编程技术网

Postgresql 条令表继承-未为实体指定标识符/主键

Postgresql 条令表继承-未为实体指定标识符/主键,postgresql,symfony,doctrine-orm,Postgresql,Symfony,Doctrine Orm,在以Postgres为数据库的条令2/Symfony 3中,我试图创建一个包含以下字段的表: **actions-reviews** id action_id action_task_id document_id review_to review_date review_description review_by is_effective 该表链接到一个doc_id,该id是名为Document的实体的外键,或者链接到名为ActionTask的实体的action_task_id。为了实现这一点

在以Postgres为数据库的条令2/Symfony 3中,我试图创建一个包含以下字段的表:

**actions-reviews**
id
action_id
action_task_id
document_id
review_to
review_date
review_description
review_by
is_effective
该表链接到一个doc_id,该id是名为Document的实体的外键,或者链接到名为ActionTask的实体的action_task_id。为了实现这一点,我通过使用鉴别器来使用继承映射。在skipper中,实体关系如下所示:

正如您所见,ActionTask和ActionReview都是Action实体的子集

我的问题是在创建实体并运行php bin/console原则时:schema:update--force出现以下错误:

[Doctrine\ORM\Mapping\MappingException]                                      
  No identifier/primary key specified for Entity "AppBundle\Entity\ActionTask  
  Review". Every Entity must have an identifier/primary key. 
在阅读论坛时,我将@ORM/Id添加到ActionTaskReview实体中,然后它会在没有任何错误的情况下更新DB。但是,当我查看postgres表时,只有document\u id字段,而没有action\u task\u id字段当我排除@ORM/id时,文档id没有抛出相同的错误,我做错了什么?

/**
 * @ORM\Entity
 * @ORM\Table(name="actions_reviews")
 * @ORM\InheritanceType("SINGLE_TABLE")
 * @ORM\DiscriminatorColumn(name="owner", type="string")
 * @ORM\DiscriminatorMap({"document":"AppBundle\Entity\DocumentActionReview","action_task":"AppBundle\Entity\ActionTaskReview"})
 * @Discriminator(field = "owner", map = {"document": "AppBundle\Entity\DocumentActionReview", "action_task": "AppBundle\Entity\ActionTaskReview"})
 */
abstract class ActionReview
{
    /**
     * @ORM\Id
     * @ORM\Column(type="guid")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @ORM\Column(type="datetime", nullable=true)
     */
    private $review_date;

    /**
     * @ORM\Column(type="text", nullable=true)
     */
    private $review_description;

    /**
     * @ORM\Column(type="boolean", nullable=true)
     */
    private $is_effective;

    /**
     * @ORM\ManyToOne(targetEntity="AppBundle\Entity\Action", inversedBy="action_review")
     * @ORM\JoinColumn(name="action_id", referencedColumnName="id")
     */
    private $action;

    /**
     * @ORM\ManyToOne(targetEntity="AppBundle\Entity\Employee")
     * @ORM\JoinColumn(name="review_to", referencedColumnName="id")
     */
    private $review_to;

    /**
     * @ORM\ManyToOne(targetEntity="AppBundle\Entity\Employee")
     * @ORM\JoinColumn(name="review_by", referencedColumnName="id")
     */
    private $review_by;

    /**
     * Get id
     *
     * @return guid
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * Set reviewDate
     *
     * @param \DateTime $reviewDate
     *
     * @return ActionReview
     */
    public function setReviewDate($reviewDate)
    {
        $this->review_date = $reviewDate;

        return $this;
    }

    /**
     * Get reviewDate
     *
     * @return \DateTime
     */
    public function getReviewDate()
    {
        return $this->review_date;
    }

    /**
     * Set reviewDescription
     *
     * @param string $reviewDescription
     *
     * @return ActionReview
     */
    public function setReviewDescription($reviewDescription)
    {
        $this->review_description = $reviewDescription;

        return $this;
    }

    /**
     * Get reviewDescription
     *
     * @return string
     */
    public function getReviewDescription()
    {
        return $this->review_description;
    }

    /**
     * Set isEffective
     *
     * @param boolean $isEffective
     *
     * @return ActionReview
     */
    public function setIsEffective($isEffective)
    {
        $this->is_effective = $isEffective;

        return $this;
    }

    /**
     * Get isEffective
     *
     * @return boolean
     */
    public function getIsEffective()
    {
        return $this->is_effective;
    }

    /**
     * Set action
     *
     * @param \AppBundle\Entity\Action $action
     *
     * @return ActionReview
     */
    public function setAction(\AppBundle\Entity\Action $action = null)
    {
        $this->action = $action;

        return $this;
    }

    /**
     * Get action
     *
     * @return \AppBundle\Entity\Action
     */
    public function getAction()
    {
        return $this->action;
    }

    /**
     * Set reviewTo
     *
     * @param \AppBundle\Entity\Employee $reviewTo
     *
     * @return ActionReview
     */
    public function setReviewTo(\AppBundle\Entity\Employee $reviewTo = null)
    {
        $this->review_to = $reviewTo;

        return $this;
    }

    /**
     * Get reviewTo
     *
     * @return \AppBundle\Entity\Employee
     */
    public function getReviewTo()
    {
        return $this->review_to;
    }

    /**
     * Set reviewBy
     *
     * @param \AppBundle\Entity\Employee $reviewBy
     *
     * @return ActionReview
     */
    public function setReviewBy(\AppBundle\Entity\Employee $reviewBy = null)
    {
        $this->review_by = $reviewBy;

        return $this;
    }

    /**
     * Get reviewBy
     *
     * @return \AppBundle\Entity\Employee
     */
    public function getReviewBy()
    {
        return $this->review_by;
    }
}
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;

use JMS\Serializer\Annotation\Exclude;

/**
 * ActionTaskReview
 * @ORM\Entity
 */
class ActionTaskReview
{
    /**      
     * @ORM\ManyToOne(targetEntity="AppBundle\Entity\ActionTask", inversedBy="action_review")
     * @ORM\JoinColumn(name="action_task_id", referencedColumnName="id") \AppBundle\Entity\ActionTask
     */
    private $action_task;


    /**
     * Set actionTask
     *
     * @param \AppBundle\Entity\ActionTask $actionTask
     *
     * @return ActionTaskReview
     */
    public function setActionTask(\AppBundle\Entity\ActionTask $actionTask = null)
    {
        $this->action_task = $actionTask;

        return $this;
    }

    /**
     * Get actionTask
     *
     * @return \AppBundle\Entity\ActionTask
     */
    public function getActionTask()
    {
        return $this->action_task;
    }
}
我的实体看起来像: ActionReview.php
/**
 * @ORM\Entity
 * @ORM\Table(name="actions_reviews")
 * @ORM\InheritanceType("SINGLE_TABLE")
 * @ORM\DiscriminatorColumn(name="owner", type="string")
 * @ORM\DiscriminatorMap({"document":"AppBundle\Entity\DocumentActionReview","action_task":"AppBundle\Entity\ActionTaskReview"})
 * @Discriminator(field = "owner", map = {"document": "AppBundle\Entity\DocumentActionReview", "action_task": "AppBundle\Entity\ActionTaskReview"})
 */
abstract class ActionReview
{
    /**
     * @ORM\Id
     * @ORM\Column(type="guid")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @ORM\Column(type="datetime", nullable=true)
     */
    private $review_date;

    /**
     * @ORM\Column(type="text", nullable=true)
     */
    private $review_description;

    /**
     * @ORM\Column(type="boolean", nullable=true)
     */
    private $is_effective;

    /**
     * @ORM\ManyToOne(targetEntity="AppBundle\Entity\Action", inversedBy="action_review")
     * @ORM\JoinColumn(name="action_id", referencedColumnName="id")
     */
    private $action;

    /**
     * @ORM\ManyToOne(targetEntity="AppBundle\Entity\Employee")
     * @ORM\JoinColumn(name="review_to", referencedColumnName="id")
     */
    private $review_to;

    /**
     * @ORM\ManyToOne(targetEntity="AppBundle\Entity\Employee")
     * @ORM\JoinColumn(name="review_by", referencedColumnName="id")
     */
    private $review_by;

    /**
     * Get id
     *
     * @return guid
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * Set reviewDate
     *
     * @param \DateTime $reviewDate
     *
     * @return ActionReview
     */
    public function setReviewDate($reviewDate)
    {
        $this->review_date = $reviewDate;

        return $this;
    }

    /**
     * Get reviewDate
     *
     * @return \DateTime
     */
    public function getReviewDate()
    {
        return $this->review_date;
    }

    /**
     * Set reviewDescription
     *
     * @param string $reviewDescription
     *
     * @return ActionReview
     */
    public function setReviewDescription($reviewDescription)
    {
        $this->review_description = $reviewDescription;

        return $this;
    }

    /**
     * Get reviewDescription
     *
     * @return string
     */
    public function getReviewDescription()
    {
        return $this->review_description;
    }

    /**
     * Set isEffective
     *
     * @param boolean $isEffective
     *
     * @return ActionReview
     */
    public function setIsEffective($isEffective)
    {
        $this->is_effective = $isEffective;

        return $this;
    }

    /**
     * Get isEffective
     *
     * @return boolean
     */
    public function getIsEffective()
    {
        return $this->is_effective;
    }

    /**
     * Set action
     *
     * @param \AppBundle\Entity\Action $action
     *
     * @return ActionReview
     */
    public function setAction(\AppBundle\Entity\Action $action = null)
    {
        $this->action = $action;

        return $this;
    }

    /**
     * Get action
     *
     * @return \AppBundle\Entity\Action
     */
    public function getAction()
    {
        return $this->action;
    }

    /**
     * Set reviewTo
     *
     * @param \AppBundle\Entity\Employee $reviewTo
     *
     * @return ActionReview
     */
    public function setReviewTo(\AppBundle\Entity\Employee $reviewTo = null)
    {
        $this->review_to = $reviewTo;

        return $this;
    }

    /**
     * Get reviewTo
     *
     * @return \AppBundle\Entity\Employee
     */
    public function getReviewTo()
    {
        return $this->review_to;
    }

    /**
     * Set reviewBy
     *
     * @param \AppBundle\Entity\Employee $reviewBy
     *
     * @return ActionReview
     */
    public function setReviewBy(\AppBundle\Entity\Employee $reviewBy = null)
    {
        $this->review_by = $reviewBy;

        return $this;
    }

    /**
     * Get reviewBy
     *
     * @return \AppBundle\Entity\Employee
     */
    public function getReviewBy()
    {
        return $this->review_by;
    }
}
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;

use JMS\Serializer\Annotation\Exclude;

/**
 * ActionTaskReview
 * @ORM\Entity
 */
class ActionTaskReview
{
    /**      
     * @ORM\ManyToOne(targetEntity="AppBundle\Entity\ActionTask", inversedBy="action_review")
     * @ORM\JoinColumn(name="action_task_id", referencedColumnName="id") \AppBundle\Entity\ActionTask
     */
    private $action_task;


    /**
     * Set actionTask
     *
     * @param \AppBundle\Entity\ActionTask $actionTask
     *
     * @return ActionTaskReview
     */
    public function setActionTask(\AppBundle\Entity\ActionTask $actionTask = null)
    {
        $this->action_task = $actionTask;

        return $this;
    }

    /**
     * Get actionTask
     *
     * @return \AppBundle\Entity\ActionTask
     */
    public function getActionTask()
    {
        return $this->action_task;
    }
}
ActionTaskReview.php
/**
 * @ORM\Entity
 * @ORM\Table(name="actions_reviews")
 * @ORM\InheritanceType("SINGLE_TABLE")
 * @ORM\DiscriminatorColumn(name="owner", type="string")
 * @ORM\DiscriminatorMap({"document":"AppBundle\Entity\DocumentActionReview","action_task":"AppBundle\Entity\ActionTaskReview"})
 * @Discriminator(field = "owner", map = {"document": "AppBundle\Entity\DocumentActionReview", "action_task": "AppBundle\Entity\ActionTaskReview"})
 */
abstract class ActionReview
{
    /**
     * @ORM\Id
     * @ORM\Column(type="guid")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @ORM\Column(type="datetime", nullable=true)
     */
    private $review_date;

    /**
     * @ORM\Column(type="text", nullable=true)
     */
    private $review_description;

    /**
     * @ORM\Column(type="boolean", nullable=true)
     */
    private $is_effective;

    /**
     * @ORM\ManyToOne(targetEntity="AppBundle\Entity\Action", inversedBy="action_review")
     * @ORM\JoinColumn(name="action_id", referencedColumnName="id")
     */
    private $action;

    /**
     * @ORM\ManyToOne(targetEntity="AppBundle\Entity\Employee")
     * @ORM\JoinColumn(name="review_to", referencedColumnName="id")
     */
    private $review_to;

    /**
     * @ORM\ManyToOne(targetEntity="AppBundle\Entity\Employee")
     * @ORM\JoinColumn(name="review_by", referencedColumnName="id")
     */
    private $review_by;

    /**
     * Get id
     *
     * @return guid
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * Set reviewDate
     *
     * @param \DateTime $reviewDate
     *
     * @return ActionReview
     */
    public function setReviewDate($reviewDate)
    {
        $this->review_date = $reviewDate;

        return $this;
    }

    /**
     * Get reviewDate
     *
     * @return \DateTime
     */
    public function getReviewDate()
    {
        return $this->review_date;
    }

    /**
     * Set reviewDescription
     *
     * @param string $reviewDescription
     *
     * @return ActionReview
     */
    public function setReviewDescription($reviewDescription)
    {
        $this->review_description = $reviewDescription;

        return $this;
    }

    /**
     * Get reviewDescription
     *
     * @return string
     */
    public function getReviewDescription()
    {
        return $this->review_description;
    }

    /**
     * Set isEffective
     *
     * @param boolean $isEffective
     *
     * @return ActionReview
     */
    public function setIsEffective($isEffective)
    {
        $this->is_effective = $isEffective;

        return $this;
    }

    /**
     * Get isEffective
     *
     * @return boolean
     */
    public function getIsEffective()
    {
        return $this->is_effective;
    }

    /**
     * Set action
     *
     * @param \AppBundle\Entity\Action $action
     *
     * @return ActionReview
     */
    public function setAction(\AppBundle\Entity\Action $action = null)
    {
        $this->action = $action;

        return $this;
    }

    /**
     * Get action
     *
     * @return \AppBundle\Entity\Action
     */
    public function getAction()
    {
        return $this->action;
    }

    /**
     * Set reviewTo
     *
     * @param \AppBundle\Entity\Employee $reviewTo
     *
     * @return ActionReview
     */
    public function setReviewTo(\AppBundle\Entity\Employee $reviewTo = null)
    {
        $this->review_to = $reviewTo;

        return $this;
    }

    /**
     * Get reviewTo
     *
     * @return \AppBundle\Entity\Employee
     */
    public function getReviewTo()
    {
        return $this->review_to;
    }

    /**
     * Set reviewBy
     *
     * @param \AppBundle\Entity\Employee $reviewBy
     *
     * @return ActionReview
     */
    public function setReviewBy(\AppBundle\Entity\Employee $reviewBy = null)
    {
        $this->review_by = $reviewBy;

        return $this;
    }

    /**
     * Get reviewBy
     *
     * @return \AppBundle\Entity\Employee
     */
    public function getReviewBy()
    {
        return $this->review_by;
    }
}
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;

use JMS\Serializer\Annotation\Exclude;

/**
 * ActionTaskReview
 * @ORM\Entity
 */
class ActionTaskReview
{
    /**      
     * @ORM\ManyToOne(targetEntity="AppBundle\Entity\ActionTask", inversedBy="action_review")
     * @ORM\JoinColumn(name="action_task_id", referencedColumnName="id") \AppBundle\Entity\ActionTask
     */
    private $action_task;


    /**
     * Set actionTask
     *
     * @param \AppBundle\Entity\ActionTask $actionTask
     *
     * @return ActionTaskReview
     */
    public function setActionTask(\AppBundle\Entity\ActionTask $actionTask = null)
    {
        $this->action_task = $actionTask;

        return $this;
    }

    /**
     * Get actionTask
     *
     * @return \AppBundle\Entity\ActionTask
     */
    public function getActionTask()
    {
        return $this->action_task;
    }
}
DocumentActionReview.php

/**
 * @ORM\Entity
 * @ORM\Table(name="actions_reviews")
 * @ORM\InheritanceType("SINGLE_TABLE")
 * @ORM\DiscriminatorColumn(name="owner", type="string")
 * @ORM\DiscriminatorMap({"document":"AppBundle\Entity\DocumentActionReview","action_task":"AppBundle\Entity\ActionTaskReview"})
 * @Discriminator(field = "owner", map = {"document": "AppBundle\Entity\DocumentActionReview", "action_task": "AppBundle\Entity\ActionTaskReview"})
 */
abstract class ActionReview
{
    /**
     * @ORM\Id
     * @ORM\Column(type="guid")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @ORM\Column(type="datetime", nullable=true)
     */
    private $review_date;

    /**
     * @ORM\Column(type="text", nullable=true)
     */
    private $review_description;

    /**
     * @ORM\Column(type="boolean", nullable=true)
     */
    private $is_effective;

    /**
     * @ORM\ManyToOne(targetEntity="AppBundle\Entity\Action", inversedBy="action_review")
     * @ORM\JoinColumn(name="action_id", referencedColumnName="id")
     */
    private $action;

    /**
     * @ORM\ManyToOne(targetEntity="AppBundle\Entity\Employee")
     * @ORM\JoinColumn(name="review_to", referencedColumnName="id")
     */
    private $review_to;

    /**
     * @ORM\ManyToOne(targetEntity="AppBundle\Entity\Employee")
     * @ORM\JoinColumn(name="review_by", referencedColumnName="id")
     */
    private $review_by;

    /**
     * Get id
     *
     * @return guid
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * Set reviewDate
     *
     * @param \DateTime $reviewDate
     *
     * @return ActionReview
     */
    public function setReviewDate($reviewDate)
    {
        $this->review_date = $reviewDate;

        return $this;
    }

    /**
     * Get reviewDate
     *
     * @return \DateTime
     */
    public function getReviewDate()
    {
        return $this->review_date;
    }

    /**
     * Set reviewDescription
     *
     * @param string $reviewDescription
     *
     * @return ActionReview
     */
    public function setReviewDescription($reviewDescription)
    {
        $this->review_description = $reviewDescription;

        return $this;
    }

    /**
     * Get reviewDescription
     *
     * @return string
     */
    public function getReviewDescription()
    {
        return $this->review_description;
    }

    /**
     * Set isEffective
     *
     * @param boolean $isEffective
     *
     * @return ActionReview
     */
    public function setIsEffective($isEffective)
    {
        $this->is_effective = $isEffective;

        return $this;
    }

    /**
     * Get isEffective
     *
     * @return boolean
     */
    public function getIsEffective()
    {
        return $this->is_effective;
    }

    /**
     * Set action
     *
     * @param \AppBundle\Entity\Action $action
     *
     * @return ActionReview
     */
    public function setAction(\AppBundle\Entity\Action $action = null)
    {
        $this->action = $action;

        return $this;
    }

    /**
     * Get action
     *
     * @return \AppBundle\Entity\Action
     */
    public function getAction()
    {
        return $this->action;
    }

    /**
     * Set reviewTo
     *
     * @param \AppBundle\Entity\Employee $reviewTo
     *
     * @return ActionReview
     */
    public function setReviewTo(\AppBundle\Entity\Employee $reviewTo = null)
    {
        $this->review_to = $reviewTo;

        return $this;
    }

    /**
     * Get reviewTo
     *
     * @return \AppBundle\Entity\Employee
     */
    public function getReviewTo()
    {
        return $this->review_to;
    }

    /**
     * Set reviewBy
     *
     * @param \AppBundle\Entity\Employee $reviewBy
     *
     * @return ActionReview
     */
    public function setReviewBy(\AppBundle\Entity\Employee $reviewBy = null)
    {
        $this->review_by = $reviewBy;

        return $this;
    }

    /**
     * Get reviewBy
     *
     * @return \AppBundle\Entity\Employee
     */
    public function getReviewBy()
    {
        return $this->review_by;
    }
}
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;

use JMS\Serializer\Annotation\Exclude;

/**
 * ActionTaskReview
 * @ORM\Entity
 */
class ActionTaskReview
{
    /**      
     * @ORM\ManyToOne(targetEntity="AppBundle\Entity\ActionTask", inversedBy="action_review")
     * @ORM\JoinColumn(name="action_task_id", referencedColumnName="id") \AppBundle\Entity\ActionTask
     */
    private $action_task;


    /**
     * Set actionTask
     *
     * @param \AppBundle\Entity\ActionTask $actionTask
     *
     * @return ActionTaskReview
     */
    public function setActionTask(\AppBundle\Entity\ActionTask $actionTask = null)
    {
        $this->action_task = $actionTask;

        return $this;
    }

    /**
     * Get actionTask
     *
     * @return \AppBundle\Entity\ActionTask
     */
    public function getActionTask()
    {
        return $this->action_task;
    }
}
<?php
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
 * @ORM\Entity
 * @ORM\Table(name="documents_actions_reviews")
 */
class DocumentActionReview extends \AppBundle\Entity\ActionReview
{
    /**
     * @ORM\ManyToOne(targetEntity="AppBundle\Entity\Document", inversedBy="action_review")
     * @ORM\JoinColumn(name="document_id", referencedColumnName="id")
     */
    private $document;
    /**
     * Set document
     *
     * @param \AppBundle\Entity\Document $document
     *
     * @return DocumentActionReview
     */
    public function setDocument(\AppBundle\Entity\Document $document = null)
    {
        $this->document = $document;
        return $this;
    }
    /**
     * Get document
     *
     * @return \AppBundle\Entity\Document
     */
    public function getDocument()
    {
        return $this->document;
    }
}

每个实体类都必须有一个标识符/主键。您可以选择用作带有@Id注释的标识符的字段

`/**
 * @ORM\Column(type="integer")
 * @ORM\Id
 * @GeneratedValue
 */
private $id;`

首先,您的
ActionTaskReview
应该扩展ActionReview

/**
 * @ORM\Entity
 * @ORM\Table(name="actions_reviews")
 * @ORM\InheritanceType("SINGLE_TABLE")
 * @ORM\DiscriminatorColumn(name="owner", type="string")
 * @ORM\DiscriminatorMap({"document":"AppBundle\Entity\DocumentActionReview","action_task":"AppBundle\Entity\ActionTaskReview"})
 * @Discriminator(field = "owner", map = {"document": "AppBundle\Entity\DocumentActionReview", "action_task": "AppBundle\Entity\ActionTaskReview"})
 */
abstract class ActionReview
{
    /**
     * @ORM\Id
     * @ORM\Column(type="guid")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @ORM\Column(type="datetime", nullable=true)
     */
    private $review_date;

    /**
     * @ORM\Column(type="text", nullable=true)
     */
    private $review_description;

    /**
     * @ORM\Column(type="boolean", nullable=true)
     */
    private $is_effective;

    /**
     * @ORM\ManyToOne(targetEntity="AppBundle\Entity\Action", inversedBy="action_review")
     * @ORM\JoinColumn(name="action_id", referencedColumnName="id")
     */
    private $action;

    /**
     * @ORM\ManyToOne(targetEntity="AppBundle\Entity\Employee")
     * @ORM\JoinColumn(name="review_to", referencedColumnName="id")
     */
    private $review_to;

    /**
     * @ORM\ManyToOne(targetEntity="AppBundle\Entity\Employee")
     * @ORM\JoinColumn(name="review_by", referencedColumnName="id")
     */
    private $review_by;

    /**
     * Get id
     *
     * @return guid
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * Set reviewDate
     *
     * @param \DateTime $reviewDate
     *
     * @return ActionReview
     */
    public function setReviewDate($reviewDate)
    {
        $this->review_date = $reviewDate;

        return $this;
    }

    /**
     * Get reviewDate
     *
     * @return \DateTime
     */
    public function getReviewDate()
    {
        return $this->review_date;
    }

    /**
     * Set reviewDescription
     *
     * @param string $reviewDescription
     *
     * @return ActionReview
     */
    public function setReviewDescription($reviewDescription)
    {
        $this->review_description = $reviewDescription;

        return $this;
    }

    /**
     * Get reviewDescription
     *
     * @return string
     */
    public function getReviewDescription()
    {
        return $this->review_description;
    }

    /**
     * Set isEffective
     *
     * @param boolean $isEffective
     *
     * @return ActionReview
     */
    public function setIsEffective($isEffective)
    {
        $this->is_effective = $isEffective;

        return $this;
    }

    /**
     * Get isEffective
     *
     * @return boolean
     */
    public function getIsEffective()
    {
        return $this->is_effective;
    }

    /**
     * Set action
     *
     * @param \AppBundle\Entity\Action $action
     *
     * @return ActionReview
     */
    public function setAction(\AppBundle\Entity\Action $action = null)
    {
        $this->action = $action;

        return $this;
    }

    /**
     * Get action
     *
     * @return \AppBundle\Entity\Action
     */
    public function getAction()
    {
        return $this->action;
    }

    /**
     * Set reviewTo
     *
     * @param \AppBundle\Entity\Employee $reviewTo
     *
     * @return ActionReview
     */
    public function setReviewTo(\AppBundle\Entity\Employee $reviewTo = null)
    {
        $this->review_to = $reviewTo;

        return $this;
    }

    /**
     * Get reviewTo
     *
     * @return \AppBundle\Entity\Employee
     */
    public function getReviewTo()
    {
        return $this->review_to;
    }

    /**
     * Set reviewBy
     *
     * @param \AppBundle\Entity\Employee $reviewBy
     *
     * @return ActionReview
     */
    public function setReviewBy(\AppBundle\Entity\Employee $reviewBy = null)
    {
        $this->review_by = $reviewBy;

        return $this;
    }

    /**
     * Get reviewBy
     *
     * @return \AppBundle\Entity\Employee
     */
    public function getReviewBy()
    {
        return $this->review_by;
    }
}
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;

use JMS\Serializer\Annotation\Exclude;

/**
 * ActionTaskReview
 * @ORM\Entity
 */
class ActionTaskReview
{
    /**      
     * @ORM\ManyToOne(targetEntity="AppBundle\Entity\ActionTask", inversedBy="action_review")
     * @ORM\JoinColumn(name="action_task_id", referencedColumnName="id") \AppBundle\Entity\ActionTask
     */
    private $action_task;


    /**
     * Set actionTask
     *
     * @param \AppBundle\Entity\ActionTask $actionTask
     *
     * @return ActionTaskReview
     */
    public function setActionTask(\AppBundle\Entity\ActionTask $actionTask = null)
    {
        $this->action_task = $actionTask;

        return $this;
    }

    /**
     * Get actionTask
     *
     * @return \AppBundle\Entity\ActionTask
     */
    public function getActionTask()
    {
        return $this->action_task;
    }
}
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;

use JMS\Serializer\Annotation\Exclude;

/**
 * ActionTaskReview
 * @ORM\Entity
 */
class ActionTaskReview extends ActionReview
{
...
}

然后,我不确定您想要实现什么,因为您正在使用,但正在设置
@ORM\Table(name=“documents\u actions\u reviews”)
DocumentActionReview类的注释。如果继承的实体需要自己的表,请切换到,或者删除注释

谢谢你,我错过了一篇评论!
/**
 * @ORM\Entity
 * @ORM\Table(name="actions_reviews")
 * @ORM\InheritanceType("SINGLE_TABLE")
 * @ORM\DiscriminatorColumn(name="owner", type="string")
 * @ORM\DiscriminatorMap({"document":"AppBundle\Entity\DocumentActionReview","action_task":"AppBundle\Entity\ActionTaskReview"})
 * @Discriminator(field = "owner", map = {"document": "AppBundle\Entity\DocumentActionReview", "action_task": "AppBundle\Entity\ActionTaskReview"})
 */
abstract class ActionReview
{
    /**
     * @ORM\Id
     * @ORM\Column(type="guid")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @ORM\Column(type="datetime", nullable=true)
     */
    private $review_date;

    /**
     * @ORM\Column(type="text", nullable=true)
     */
    private $review_description;

    /**
     * @ORM\Column(type="boolean", nullable=true)
     */
    private $is_effective;

    /**
     * @ORM\ManyToOne(targetEntity="AppBundle\Entity\Action", inversedBy="action_review")
     * @ORM\JoinColumn(name="action_id", referencedColumnName="id")
     */
    private $action;

    /**
     * @ORM\ManyToOne(targetEntity="AppBundle\Entity\Employee")
     * @ORM\JoinColumn(name="review_to", referencedColumnName="id")
     */
    private $review_to;

    /**
     * @ORM\ManyToOne(targetEntity="AppBundle\Entity\Employee")
     * @ORM\JoinColumn(name="review_by", referencedColumnName="id")
     */
    private $review_by;

    /**
     * Get id
     *
     * @return guid
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * Set reviewDate
     *
     * @param \DateTime $reviewDate
     *
     * @return ActionReview
     */
    public function setReviewDate($reviewDate)
    {
        $this->review_date = $reviewDate;

        return $this;
    }

    /**
     * Get reviewDate
     *
     * @return \DateTime
     */
    public function getReviewDate()
    {
        return $this->review_date;
    }

    /**
     * Set reviewDescription
     *
     * @param string $reviewDescription
     *
     * @return ActionReview
     */
    public function setReviewDescription($reviewDescription)
    {
        $this->review_description = $reviewDescription;

        return $this;
    }

    /**
     * Get reviewDescription
     *
     * @return string
     */
    public function getReviewDescription()
    {
        return $this->review_description;
    }

    /**
     * Set isEffective
     *
     * @param boolean $isEffective
     *
     * @return ActionReview
     */
    public function setIsEffective($isEffective)
    {
        $this->is_effective = $isEffective;

        return $this;
    }

    /**
     * Get isEffective
     *
     * @return boolean
     */
    public function getIsEffective()
    {
        return $this->is_effective;
    }

    /**
     * Set action
     *
     * @param \AppBundle\Entity\Action $action
     *
     * @return ActionReview
     */
    public function setAction(\AppBundle\Entity\Action $action = null)
    {
        $this->action = $action;

        return $this;
    }

    /**
     * Get action
     *
     * @return \AppBundle\Entity\Action
     */
    public function getAction()
    {
        return $this->action;
    }

    /**
     * Set reviewTo
     *
     * @param \AppBundle\Entity\Employee $reviewTo
     *
     * @return ActionReview
     */
    public function setReviewTo(\AppBundle\Entity\Employee $reviewTo = null)
    {
        $this->review_to = $reviewTo;

        return $this;
    }

    /**
     * Get reviewTo
     *
     * @return \AppBundle\Entity\Employee
     */
    public function getReviewTo()
    {
        return $this->review_to;
    }

    /**
     * Set reviewBy
     *
     * @param \AppBundle\Entity\Employee $reviewBy
     *
     * @return ActionReview
     */
    public function setReviewBy(\AppBundle\Entity\Employee $reviewBy = null)
    {
        $this->review_by = $reviewBy;

        return $this;
    }

    /**
     * Get reviewBy
     *
     * @return \AppBundle\Entity\Employee
     */
    public function getReviewBy()
    {
        return $this->review_by;
    }
}
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;

use JMS\Serializer\Annotation\Exclude;

/**
 * ActionTaskReview
 * @ORM\Entity
 */
class ActionTaskReview
{
    /**      
     * @ORM\ManyToOne(targetEntity="AppBundle\Entity\ActionTask", inversedBy="action_review")
     * @ORM\JoinColumn(name="action_task_id", referencedColumnName="id") \AppBundle\Entity\ActionTask
     */
    private $action_task;


    /**
     * Set actionTask
     *
     * @param \AppBundle\Entity\ActionTask $actionTask
     *
     * @return ActionTaskReview
     */
    public function setActionTask(\AppBundle\Entity\ActionTask $actionTask = null)
    {
        $this->action_task = $actionTask;

        return $this;
    }

    /**
     * Get actionTask
     *
     * @return \AppBundle\Entity\ActionTask
     */
    public function getActionTask()
    {
        return $this->action_task;
    }
}