Symfony 关联指的是不存在的反向边字段

Symfony 关联指的是不存在的反向边字段,symfony,doctrine-orm,doctrine,Symfony,Doctrine Orm,Doctrine,我有两个实体: 可转让性: 附件: 我的目标是一张票可以有几个附件 我有一个错误: 关联AppBundle\Entity\Attachment#票证引用 反向侧字段AppBundle\Entity\Ticket#附件,不包含 存在 我不知道我错在哪里。。。有人知道吗 问候 映射的超类不能是实体,它不可查询且 映射超类定义的持久关系必须是 单向(仅限拥有方)这意味着一对多 映射的超类上根本不可能存在关联。 此外,多对多关联只有在映射 超类目前仅在一个实体中使用。对于 进一步支持继承、单表继承或联接

我有两个实体:

可转让性: 附件: 我的目标是一张票可以有几个附件

我有一个错误:

关联AppBundle\Entity\Attachment#票证引用 反向侧字段AppBundle\Entity\Ticket#附件,不包含 存在

我不知道我错在哪里。。。有人知道吗

问候

映射的超类不能是实体,它不可查询且 映射超类定义的持久关系必须是 单向(仅限拥有方)这意味着一对多 映射的超类上根本不可能存在关联。 此外,多对多关联只有在映射 超类目前仅在一个实体中使用。对于 进一步支持继承、单表继承或联接表继承 必须使用功能

所以,从技术上讲,你并没有做错什么,只是它根本不受支持。虽然生成的错误消息毫无帮助

/**
 * @ORM\MappedSuperclass()
 */
class Ticket implements TicketInterface
{
    const DIR_UPLOAD = 'TicketUpload';

    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $id;


    /**
     * @ORM\OneToMany(targetEntity="AppBundle\Entity\Attachment", mappedBy="ticket", cascade={"remove"}, orphanRemoval=true)
     */
    protected $attachments;

    /**
     * Ticket constructor.
     */
    public function __construct()
    {
        $this->attachments = new ArrayCollection();
    }

    public function getId(): ?int
    {
        return $this->id;
    }

    /**
     * Add attachments
     *
     * @param Attachment $attachments
     * @return Ticket
     */
    public function addAttachment(Attachment $attachments)
    {
        $this->attachments[] = $attachments;

        return $this;
    }

    /**
     * Remove attachments
     *
     * @param Attachment $attachments
     */
    public function removeAttachment(Attachment $attachments)
    {
        $this->attachments->removeElement($attachments);
    }

    /**
     * Get attachments
     *
     * @return Collection
     */
    public function getAttachments()
    {
        return $this->attachments;
    }

}
/**
 * @ORM\Entity(repositoryClass="AppBundle\Repository\AttachmentRepository")
 * @ORM\Table(name="ticket_attachments")
 */
class Attachment
{
    const DIR_UPLOAD = 'TicketUpload';

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

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

    /**
     * @ORM\ManyToOne(targetEntity="AppBundle\Entity\Ticket", inversedBy="attachments")
     * @ORM\JoinColumn(name="ticket_id", referencedColumnName="id", nullable=true)
     */
    protected $ticket;

    /**
     * @Assert\File(
     *     maxSize = "300k",
     *     mimeTypes = {"application/pdf", "application/x-pdf", "text/plain", "application/msword",
     *     "application/vnd.ms-excel", "image/jpeg", "image/x-citrix-jpeg", "image/png", "image/x-citrix-png", "image/x-png", "image/gif"},
     *     mimeTypesMessage = "Liste de formats de fichiers acceptés : .pdf,.txt,.doc,.xls,.jpg,.png,.gif"
     * )
     */
    private $attachmentFile;

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

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

    public function getName()
    {
        return $this->name;
    }


    public function setName($name): self
    {
        $this->name = $name;

        return $this;
    }

    public function getTicket(): ?Ticket
    {
        return $this->ticket;
    }

    public function setTicket(Ticket $ticket): void
    {
        $this->ticket = $ticket;
    }

    /**
     * @return mixed
     */
    public function getAttachment(): ?string
    {
        return $this->attachment;
    }

    public function setAttachment($attachment): self
    {
        $this->attachment = $attachment;

        return $this;
    }

    public function getAttachmentFile(): ?UploadedFile
    {
        return $this->attachmentFile;
    }

    /**
     * @param $attachmentFile
     * @return Ticket
     */
    public function setAttachmentFile($attachmentFile): self
    {
        $this->attachmentFile = $attachmentFile;
        return $this;
    }

    public function getAttachmentWebPath()
    {
        return self::DIR_UPLOAD . '/' . $this->getAttachment();
    }
}