我们有一个分类entity,来实现无限分类,那么当我们删除一个分类我们希望我们关联的子类也一起删除。
我们只需要了解 doctrine的cascade=”REMOVE”即可
下面我们来看看我们的enttiy
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
class Category { /** * @var integer * * @ORM\Column(name="id", type="integer") * @ORM\Id * @ORM\GeneratedValue(strategy="AUTO") */ private $id; /** * @var string * * @ORM\Column(name="name", type="string", length=255) */ private $name; /** * @ORM\OneToMany(targetEntity="Category", mappedBy="parent",cascade="REMOVE") * **/ private $children; /** * * @ORM\ManyToOne(targetEntity="Category", inversedBy="children") * @ORM\JoinColumn(name="parent_id", referencedColumnName="id") **/ private $parent; } |
你可以看到我们在这里添加了cascade=“REMOVE”
1 2 3 4 5 |
/** * @ORM\OneToMany(targetEntity="Category", mappedBy="parent",cascade="REMOVE") * **/ private $children; |
ok,当我们remove($entity)的时候,所有他下面的子集即可删除。
1 2 |
$em->remove($entity); $em->flush(); |