【发布时间】:2026-02-08 14:35:01
【问题描述】:
我有一个可以拥有很多截图的软件。
这是软件类:
class Software
{
public function __construct()
{
$this->screenshots = new ArrayCollection();
}
/**
* @ORM\OneToMany(targetEntity="Screenshot", mappedBy="software", cascade={"persist"})
* @ORM\OrderBy({"sequence" = "ASC", "id" = "ASC"})
*/
private $screenshots;
public function setScreenshots($screenshots)
{
$this->screenshots = $screenshots;
}
}
这是截图类:
class Screenshot
{
/**
* @ORM\ManyToOne(targetEntity="Software", inversedBy="screenshots")
* @ORM\JoinColumn(name="software_id", referencedColumnName="id")
*/
private $software;
/**
* @param mixed $software
*/
public function setSoftware($software)
{
$this->software = $software;
}
当我生成一些新的屏幕截图时,将它们放入数组集合并调用
$software->setScreenshots($newScreenshots) 使用新的屏幕截图一切正常。新的屏幕截图已保存,并且它们具有对软件的引用。
但是当我生成一些其他截图并再次调用该方法时,它并没有删除旧截图。刚刚添加了新的屏幕截图。
有没有办法提供某种级联选项,以便删除旧的屏幕截图?或者至少删除对软件的引用?
【问题讨论】:
标签: symfony doctrine-orm one-to-many cascade many-to-one