2016-02-09 84 views
0

我正在使用Doctrine 2.我有一個實體,其中有自我加入。兩列中加入如下:Cascade remove not working.cascade = {「remove」}

/** 
* @ORM\ManyToOne(targetEntity="Entities\wall_post", inversedBy="shared_wallpost") 
* @ORM\JoinColumn(name="wall_post_id", referencedColumnName="id") 
*/ 
private $shared_from_wallpost; 

/** 
* @ORM\OneToMany(targetEntity="Entities\wall_post", mappedBy="shared_from_wallpost", cascade={"remove"}) 
*/ 
private $shared_wallpost; 

比方說,有兩個職位:一個ID = 1001第二ID = 1002(有 wall_post_id = 1001)

現在我想,當我刪除1001,後與wall_post_id 1001得到 刪除。

爲此,我使用cascade = {「remove」}但它不起作用。 我的查詢,刪除wallpost對象:

//Removing record from table. 

    $qb_1 = $em->createQueryBuilder(); 
       $qb_1->delete('\Entities\wall_post', 'wp'); 
       $qb_1->where('wp.id = ?1'); 
       $qb_1->setParameter('1', $wallpost_id); 
       $qb_1->getQuery()->execute(); 
       $em -> flush(); 
+0

映射看起來沒問題。刪除後是否沖洗實體管理器? – manix

+0

@manix我已添加我的查詢刪除對象在我的答案請看看。我正在使用$ em-> flush;但沒用。謝謝。 – Simer

+0

我不知道爲什麼你當前的代碼不工作,但你可以嘗試'onDelete =「CASCADE」'作爲替代 – FuzzyTree

回答

0

梯級= {「刪除」} 我們必須使用:

$em->remove($wallpost_obj); 
      $em->flush(); 

我用了:

$qb_1 = $em->createQueryBuilder(); 
       $qb_1->delete('\Entities\wall_post', 'wp'); 
       $qb_1->where('wp.id = ?1'); 
       $qb_1->setParameter('1', $wallpost_id); 
       $qb_1->getQuery()->execute(); 
       $em -> flush(); 

現在級聯刪除工作中。