我的实体如下:
我还使用了 cascade = {" remove"} 属性,以便在相应的投资组合被删除时删除系列和资产。
意甲
/**
* Serie
*
* @ORM\Table(name="serie")
* @ORM\HasLifecycleCallbacks
*/
class Serie
{
/**
* @var \Portfolio
*
* @ORM\ManyToOne(targetEntity="Portfolio", inversedBy="series")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="portfolio", referencedColumnName="id")
* })
*/
private $portfolio;
/**
* @var \Image
*
* @ORM\OneToOne(targetEntity="Image")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="preview", referencedColumnName="id", nullable=true, onDelete="SET NULL")
* })
*/
private $preview;
/**
* @var \Doctrine\Common\Collections\Collection
*
* @ORM\OneToMany(targetEntity="Asset", mappedBy="serie", cascade={"remove"})
**/
private $assets;
/**
* @ORM\PostRemove
*/
public function removeDirectory(){
rmdir(...);
}
资产
/**
* @ORM\Table(name="asset")
* @ORM\HasLifecycleCallbacks
*/
class Asset
{
/**
* @var \Serie
*
* @ORM\ManyToOne(targetEntity="Serie", inversedBy="assets")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="serie", referencedColumnName="id")
* })
*/
protected $serie;
/**
* @ORM\PostRemove()
*/
public function removeFile()
{
unlink($this->filename);
}
我在关系because the other way around would result in a foreign key constraint error.的资产方面放了级联= {"删除"} 属性
Serie中的postRemove方法被调用,但不是Asset中的方法。我做错了什么,有没有办法解决它?