Symfony 关联指的是不存在的反向边字段
我有两个实体: 可转让性: 附件: 我的目标是一张票可以有几个附件 我有一个错误: 关联AppBundle\Entity\Attachment#票证引用 反向侧字段AppBundle\Entity\Ticket#附件,不包含 存在 我不知道我错在哪里。。。有人知道吗 问候 映射的超类不能是实体,它不可查询且 映射超类定义的持久关系必须是 单向(仅限拥有方)这意味着一对多 映射的超类上根本不可能存在关联。 此外,多对多关联只有在映射 超类目前仅在一个实体中使用。对于 进一步支持继承、单表继承或联接表继承 必须使用功能 所以,从技术上讲,你并没有做错什么,只是它根本不受支持。虽然生成的错误消息毫无帮助Symfony 关联指的是不存在的反向边字段,symfony,doctrine-orm,doctrine,Symfony,Doctrine Orm,Doctrine,我有两个实体: 可转让性: 附件: 我的目标是一张票可以有几个附件 我有一个错误: 关联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();
}
}