Symfony 删除具有两个OneToOne关系的实体
我在Symfony 4.2的工作中遇到了一个问题 我是Symfony的初学者,需要帮助了解级联删除和外键错误 我有3个这样的实体: 第一个是调用图像Symfony 删除具有两个OneToOne关系的实体,symfony,foreign-keys,one-to-one,Symfony,Foreign Keys,One To One,我在Symfony 4.2的工作中遇到了一个问题 我是Symfony的初学者,需要帮助了解级联删除和外键错误 我有3个这样的实体: 第一个是调用图像 class Image { /** * @ORM\Id() * @ORM\GeneratedValue() * @ORM\Column(type="integer") */ private $id; /** * @ORM\Column(type="string", length=2
class Image
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string", length=255)
*/
private $name;
/**
* @ORM\OneToOne(
* targetEntity="App\Entity\Thumbnail",
* mappedBy="Image",
* cascade={"persist"},
* orphanRemoval=true
* )
*/
private $Thumbnail;
}
第二个是此图像的缩略图:
class Thumbnail
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string", length=255)
*/
private $name;
/**
* @ORM\OneToOne(
* targetEntity="App\Entity\Image",
* inversedBy="Thumbnail",
* cascade={"persist", "remove"}
* )
* @ORM\JoinColumn(nullable=false)
*/
private $image;
}
以及包含缩略图的Div:
class Div
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string", length=255)
*/
private $name;
/**
* @ORM\OneToOne(targetEntity="App\Entity\Thumbnail", cascade={"persist", "remove"})
*/
private $Thumbnail;
}
这是我的三个实体,我的问题是当我试图删除这三个实体中的一个时,因为:
- 当我删除一个图像时,我需要删除他的缩略图,但是这个Div没有缩略图也可以生存,所以我不能删除这个Div
- 当我删除缩略图时,我不能删除图像,也不能删除Div
- 当我删除Div时,我不能删除缩略图
感谢您的帮助,并对我的英语不好表示歉意。请在您的Div实体中尝试以下代码:
/**
* @ORM\OneToOne(targetEntity="App\Entity\Thumbnail", cascade={"persist", "remove"})
* @ORM\JoinColumn(name="thumbnail_id", referencedColumnName="id", onDelete="SET NULL")
*/
private $Thumbnail;
谢谢你的回答,这解决了我的问题。我只是添加了“ORM\@JoinColumn”行,因为对于我的项目,在我的缩略图中添加Div实体毫无意义。请将我的答案添加到正确的位置,以便其他用户可以轻松找到正确的答案。