2017-09-12 12 views
1

私はエンティティが2つあります:ユーザーと愛。これは「1対多、双方向」です。ここで別のエンティティ内のエンティティを削除するシンフォニー

は私の実体である:

ユーザー:

namespace SE\UserBundle\Entity; 

/** 
* User 
* 
* @ORM\Table(name="user") 
* @ORM\Entity(repositoryClass="SE\UserBundle\Repository\UserRepository") 
*/ 
class User extends BaseUser 
{ 
    //... 
    /** 
    * One User has Many Loves. 
    * @ORM\OneToMany(targetEntity="SE\CoreBundle\Entity\Love", mappedBy="user", cascade={"persist"}) 
    */ 
    private $loves; 
    //... 

    public function __construct() 
    { 
     //... 
     $this->loves = new ArrayCollection(); 
     //... 
    } 

    //... 

    /** 
    * Remove love 
    * 
    * @param \SE\CoreBundle\Entity\Love $love 
    */ 
    public function removeLove(\SE\CoreBundle\Entity\Love $love) 
    { 
     $this->loves->removeElement($love); 
     //delete love 
    } 

    //... 
} 

愛:

namespace SE\CoreBundle\Entity; 

/** 
* Love 
* 
* @ORM\Table(name="love") 
* @ORM\Entity(repositoryClass="SE\CoreBundle\Repository\LoveRepository") 
*/ 
class Love 
{ 
    //... 
    /** 
    * Many Loves have One User. 
    * @ORM\ManyToOne(targetEntity="SE\UserBundle\Entity\User", inversedBy="loves", cascade={"persist"}) 
    * @ORM\JoinColumn(name="user_id", referencedColumnName="id") 
    */ 
    private $user; 
    //... 

    /** 
    * Set user 
    * 
    * @param \SE\UserBundle\Entity\User $user 
    * 
    * @return Love 
    */ 
    public function setUser(\SE\UserBundle\Entity\User $user = null) 
    { 
     $this->user = $user; 
     return $this; 
    } 
    //... 
} 

私の質問は: 私は私のユーザーにremoveLove()を実行する方法は、あります、私のコントローラでエンティティマネージャを使用せずに、対応するLoveエンティティのオートデートをデータベースに保存します。私はそのように見えるために私のコントローラをしたいと思います:

class DefaultController extends Controller 
{ 
    public function indexAction() 
    { 
     //... 
     $em = $this->getDoctrine()->getManager(); 
     $user->removeLove($love); 
     $em->persist($user); 
     $em->flush(); 
     //... 
    } 
} 

、結果は$loveは、データベースの削除となり$usergetLoves()$loveではないだろう、ということでしょう。

+1

に関連付けられている 'カスケード= {「持続」}' =カスケード 'へ{「持続」、「削除」}' – kunicmarko20

+0

kunicmarko20 @ 'EntityManager :: remove'が呼び出されていないので、うまくいくとは思いません。 – CappY

答えて

1

あなたは試みることができる:Orphan Removal option

をエンティティLoveが別のUserに関連付けられていないことを確認してください。だから、1エンティティLoveは、常に愛の変更のための注釈にユーザエンティティに一つだけUser

関連する問題