doushi1912 2015-07-07 14:04
浏览 22

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

I'm a big begginer in Symfony, coming from Ruby on Rails world and trying to get same behaviours.

I have a simple application with 2 entities : Product and Category, with the relation Product belongs to Category and Category has many Products.

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

What I'm trying to do is to delete every nested products when I'm deleting a Category.

My current action looks like

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/');
}

A simple method could be remove all the products in the controller, but it's not very maintainable and not very object oriented. I'm looking about a practice to remove all the products of the deleted category directly in the model. A method, in RoR, is the callbacks (named after_destroy), automatically called when the object is destroyed. Is there any looking-like method in Symfony ?

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
    • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
    • ¥16 mybatis的代理对象无法通过@Autowired装填
    • ¥15 可见光定位matlab仿真
    • ¥15 arduino 四自由度机械臂
    • ¥15 wordpress 产品图片 GIF 没法显示
    • ¥15 求三国群英传pl国战时间的修改方法
    • ¥15 matlab代码代写,需写出详细代码,代价私
    • ¥15 ROS系统搭建请教(跨境电商用途)
    • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。