如何在Symfony中自动删除嵌套对象?

时间:2015-07-07 14:04:46

标签: php symfony callback

我是Symfony的重要人物,来自Ruby on Rails世界并试图获得相同的行为。

我有一个简单的应用程序,包含2个实体:产品和类别,产品属于类别,类别有很多产品。

class Category {
  [ ... ]
  /** 
   * @ORM\OneToMany(targetEntity="Product", mappedBy="category", cascade={"all"}) 
   */
  protected $products;
}
class Product {
  [ ... ]
  /** 
   * @ORM\ManyToOne(targetEntity="Category", inversedBy="products", cascade={"all"}) 
   */
  protected $category;
}

我要做的是在删除类别时删除每个嵌套产品。

我目前的行动似乎是

public function deleteAction($id, Request $request)
{
    $repository = $this->getDoctrine()->getRepository('AppBundle:Category');
    $category = $repository->find($id);
    $em = $this->getDoctrine()->getManager();
    $em->remove($category);
    $em->flush();
    return $this->redirect('/categories/');
}

一个简单的方法可能是删除控制器中的所有产品,但它不是很易维护,也不是面向对象的。我正在寻找一种直接在模型中删除已删除类别的所有产品的做法。 RoR中的方法是callbacks(名为after_destroy),在对象被销毁时自动调用。在Symfony中有任何看起来像的方法吗?

0 个答案:

没有答案