doctrine 2代理类中的EntityNotFoundException

Flo*_*cel 5 mapping proxy inheritance class

访问doctrine 2中的代理类属性时,EntityNotFoundException可能的原因是什么?无论如何,以下是我的实体的结构:

/**
 * @ORM\Table(name="comments")
 *
 * @ORM\InheritanceType("JOINED")
 * @ORM\DiscriminatorColumn(name="comment_type", type="smallint")
 * @ORM\DiscriminatorMap({
 *    1 = "VisitorComment",
 *    2 = "MemberComment"
 * })
 */
 class Comment
 {
    //with common properties of its subclasses
 }
Run Code Online (Sandbox Code Playgroud)

子类如下:

/**
 * @ORM\Table(name="member_comments")
 */
class MemberComment extends Comment
{
    /**
     * owning side
     *
     * @var Member $author
     * 
     * @ORM\ManyToOne(targetEntity="Member")
     * @ORM\JoinColumn(name="author_id", referencedColumnName="id", nullable=false)
     */
     private $author;

    /**
     * Set author
     *
     * @param Member $author
     */
    public function setAuthor($author)
    {
        $this->author = $author;
    }

    /**
     * Get author
     *
     * @return Member
     */
    public function getAuthor()
    {
        return $this->author;
    }
}


/**
 * @ORM\Table(name="visitor_comments")
 */
class VisitorComment extends Comment
{
   /**
    * owning side
    *
    * @var Visitor $author
    * 
    * @ORM\ManyToOne(targetEntity="Visitor")
    * @ORM\JoinColumn(name="author_id", referencedColumnName="id", nullable=false)
    */
    private $author;

    /**
     * Set author
     *
     * @param string $author
     */
     public function setAuthor($author)
     {
        $this->author = $author;
     }

    /**
     * Get author
     *
     * @return Visitor
     */
    public function getAuthor()
    {
        return $this->author;
    }
}
Run Code Online (Sandbox Code Playgroud)

当我调用$ comment-> getAuthor() - > getFirstName()< 假设作为Member或Visitor实体的作者具有firstName属性 > 时,会发生异常.在这种情况下,getAuthor()返回VisitorProxy或MemberProxy的代理类.

请帮助我.我还是学说新手.

Dav*_*cea 2

Floricel 发现,这可能是由于指向 Proxy 类引用的表的列中的无效外键造成的。