2013-04-24 53 views
0

我正在使用Symfony2在这个界面上工作,在这里我有博客和与他们相关的类别,有时我们想删除不再有效的博客,所以我想删除博客,我将这个功能添加到控制器,它消除了博客,但在同一时间,它会删除所有相关类别:deleteAction:为什么要删除与此博客关联的类别?

 public function deleteAction(Request $request, $id) 
     { 
      $form = $this->createDeleteForm($id); 
      $form->bind($request); 

      if ($form->isValid()) { 
       $em = $this->getDoctrine()->getManager(); 
       $blawg = $em->getRepository('BlogBundle:Blog')->find($id); 

       if (!$blog) { 
        throw $this->createNotFoundException('Unable to find Blog entity.'); 
       } 

       $em->remove($blog); 
       $em->flush(); 
      } 

      return $this->redirect($this->generateUrl('blogs_inactive')); 
     } 

我能做些什么,只删除博客信息? 在数据库中我有以下表格(Synfony2上的实体): 博客,供稿,分类,博文。

博客实体:

/** 
* @var Category[] 
* 
* @ORM\ManyToMany(targetEntity="Category", cascade={"all"}) 
* @ORM\JoinTable(name="blog_categories", 
*  joinColumns={@ORM\JoinColumn(name="blog_id", referencedColumnName="blog_id")}, 
*  inverseJoinColumns={@ORM\JoinColumn(name="category_id", referencedColumnName="category_id")} 
*) 
*/ 
private $categories; 


/** 
* @var Feed 
* @ORM\OneToOne(targetEntity="Feed", mappedBy="blog", cascade={"all"}) 
*/ 
private $feed; 


/** 
* @var ArrayCollection $posts 
* @ORM\OneToMany(targetEntity="BlogPost", mappedBy="blog") 
*/ 
private $posts; 

饲料实体:

/** 
* @var Blawg 
* 
* @ORM\ManyToOne(targetEntity="Blog") 
* @ORM\JoinColumn(name="blog_id", referencedColumnName="blog_id", 
* onDelete="CASCADE") 
*/ 
private $blawg; 
+0

如果你有他们或实体代码,如果你使用注释,请发布你的blog.orm.yml/feed.orm.yml/categories.orm.yml。 – Lighthart 2013-04-24 00:32:57

回答

0

这似乎是一个下降的级联。

看看你的实体。您可能在关系定义中有一个cascade={"remove"}或数据库中有一个ON DELETE触发器。这个答案可能会帮助你太:

On delete cascade with doctrine2

0

由于Renan Ivo说,你可以有这些情形之一:

1)cascade={"remove"}到外键(博客侧)将下降类别记录也 已定义为
2)在数据库级别具有ON DELETE触发器。请看看你的SQL Schema