2011-02-17 21 views
15

क्या यह दो ऑब्जेक्ट्स बनाने के लिए सिद्धांत 2 में संभव है जो कई संबंधित हैं और कॉल केवल उनमें से एक को बचाने के लिए जारी हैं?सिद्धांत 2 ManyToMany कैस्केड

उपयोगकर्ता इकाई:

/** 
* Owning Side 
* 
* @ManyToMany(targetEntity="Role", inversedBy="users", cascade={"persist"}) 
* @JoinTable(name="user_roles", 
*  joinColumns={@JoinColumn(name="user_id", referencedColumnName="id")}, 
*  inverseJoinColumns={@JoinColumn(name="role_id", referencedColumnName="id")} 
*  ) 
*/ 
public $roles; 

भूमिका इकाई:

/** 
* Inverse Side 
* 
* @ManyToMany(targetEntity="User", mappedBy="roles") 
*/ 
public $users; 

सहेजा जा रहा है:

$role = new Role(); 

    $user = new User(); 

$user->roles->add($role); 
$role->users->add($user); 

$em->persist($user); 
$em->flush(); 

यह काम नहीं करता है और trows एक त्रुटि "एक नई इकाई एक के माध्यम से मिला था रिश्ते जो लगातार संचालन के लिए कॉन्फ़िगर नहीं किया गया था: संस्थाएं \ भूमिका @ 0000000004a29c11000000005c48cb75। स्पष्ट रूप से बने रहें रिश्ते पर नई इकाई या कैस्केडिंग निरंतर संचालन को कॉन्फ़िगर करें। "

उत्तर

10

आपको भूमिका इकाई में cascade={"persist"} लागू करना चाहिए।

सिद्धांत पर कोई विशेषज्ञ नहीं है, लेकिन मुझे लगता है कि सिद्धांत कैस्केडिंग विकल्पों के लिए संबंधित इकाई की जांच करता है।

जब से तुमउपयोगकर्तासेभूमिकाओं को जारी रहती है व्यापक रहे हैं, यह भूमिका इकाई की जाँच करता है अगर यह झरना के साथ कायम किया जाना चाहिए।

+2

@OneToOne (targetEntity = "My_Model_FasciaEta", cascade = {"persist"} में) – max4ever

संबंधित मुद्दे