例如,我有像用户、项目、图像这样的实体。用户有很多项目。项目有很多图像。
我应该选择哪个删除选项, cascade={'remove'} 或 onDelete=Cascade ?
我也有关于 Image 的生命周期回调。我知道上述级联选项之间的区别。我想知道我是否在删除用户对象时使用了 onDelete=cascade 选项,是否会调用像 PostRemove() 这样的生命周期回调?
这是我的实体:
//User.php
class User {
/**
* @ORM\OneToMany(targetEntity="Item", mappedBy="user", onDelete="CASCADE")
*/
private $items;
}
//Item.php
class Item {
/**
* @var User
*
* @ORM\ManyToOne(targetEntity="User", inversedBy="items")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="user_id", referencedColumnName="id")
* })
*/
private $user;
/**
* @ORM\OneToMany(targetEntity="ItemImage", mappedBy="item",onDelete="CASCADE")
*/
protected $images;
}
//ItemImage.php
class ItemImage {
/* Setters and getter **/
/**
* @var Items
*
* @ORM\ManyToOne(targetEntity="Item", inversedBy="images")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="item_id", referencedColumnName="id")
* })
*/
private $item;
/**
* @ORM\PostRemove()
*/
public function removeUpload() {
unlink($this->getUploadDir() . '/' . $this->imageName);
}
}
我的问题是当用户被删除时,与用户相关的所有项目和与项目相关的图像都会被删除吗?我还希望在删除用户时调用 Image 实体的 PostRemove() 回调?对于这种情况,我应该使用哪个选项,onDelete="cascade" 或 cascade={'remove'}?