2014-04-12 86 views
0

第一了一些代碼:學說:更新整個實體

class User { 
    * @ORM\OneToMany(targetEntity="Profile", mappedBy="user") 
    */ 
    protected $profiles; 
} 

(有來更多的代碼,但是這影響了我的問題的一部分)。

所以,比如我有

早在數據庫

User1: id = 1 
Profile1: id = 1, parent = User1 
Profile2: id = 2, parent = User2 

尚未持久

Profile3: 
Profile4: 

我想要做的是能只要致電:

$user1->removeAllProfiles(); $user1->addAllNewProfiles(array($profile3, $profile4)); 

和th應該自動刪除所有舊的配置文件並添加所有新的配置文件。

我希望很清楚我想達到什麼目的。任何人有想法?

回答

1

您可以更新你的財產註解利用orphanRemoval ...

/** @OneToMany(targetEntity="Profile", mappedBy="user", orphanRemoval=true) */ 
protected $profiles; 

這告訴學說刪除被留下沒有關聯User對象的任何配置文件,所以當你打電話$user->removeAllProfiles();,然後調用$em->flush()任何以前的Profile與用戶關聯的對象都將從數據庫中刪除。

+0

非常感謝!這麼快,很好的答案! :d –