2011-09-06 9 views
8

मैं अपने सिद्धांत संस्थाओं के भीतर निम्नलिखित संबंध है:सिद्धांत 2: जटिल संबंधों में सहेजा जा रहा है इकाई

FavoriteRecipe

/** 
* @ManyToOne(targetEntity="User", inversedBy="favoriteRecipes") 
*/ 
private $user; 

/** 
* @ManyToOne(targetEntity="Recipe", inversedBy="favoriteRecipes") 
*/ 
private $recipe; 

पकाने की विधि

/** 
* @OneToMany(targetEntity="FavoriteRecipe", mappedBy="user") 
*/ 
private $favoriteRecipes; 

उपयोगकर्ता

/** 
* @OneToMany(targetEntity="FavoriteRecipe", mappedBy="user") 
*/ 
private $favoriteRecipes; 

मेरी नियंत्रकों में से एक में मैं निम्नलिखित कोड है:

$favoriteRecipe = new \Entities\FavoriteRecipe(); 
$favoriteRecipe->setRecipe($recipe); 
$favoriteRecipe->setUser($user); 
$this->_em->persist($favoriteRecipe); 
$this->_em->flush(); 

लेकिन यह निम्न संदेश के साथ एक अपवाद फेंकता है:

एक नई इकाई एक रिश्ता है कि था के माध्यम से मिला था कॉन्फ़िगर करने के लिए कॉन्फ़िगर नहीं किया गया है इकाइयां \ उपयोगकर्ता @ 00000000408bd010000000007cb1380e। स्पष्ट रूप से नई इकाई को जारी रखें या संबंधों पर कैस्केडिंग निरंतर संचालन कॉन्फ़िगर करें।

मैं FavoriteRecipe इकाई को सही तरीके से कैसे बना और सहेज सकता हूं?

उत्तर

7

क्या आपने अपनी सभी संबंधित संस्थाओं के लिए कैस्केड विकल्प सेट किया था? यह excample के लिए झरना संपत्ति की स्थापना द्वारा किया जाता है: झरना = { "जारी रहती है", "हटाने"}

शायद यह पेज: http://www.doctrine-project.org/docs/orm/2.0/en/reference/working-with-associations.html

या इन वीडियो: http://www.zendcasts.com/many-to-many-with-doctrine-2/2011/03/ http://www.zendcasts.com/one-to-many-with-doctrine-2/2011/03/

+1

जो की ओर करने के लिए एसोसिएशन क्या मैं कैस्केड विकल्प जोड़ता हूं? मालिकाना पक्ष या उलटा पक्ष? – moteutsch

+0

यह आपके इच्छित व्यवहार पर निर्भर करता है लेकिन आपकी स्थिति में मुझे उलटा पक्ष लगता है। मैं कहूंगा कि कोशिश करें, और देखें कि डेटाबेस में क्या खुशी है। –

+2

और मैं जोड़ूंगा "और आपको निष्कर्ष साझा करने के लिए यहां वापस आएं"। लोगों ने आपकी मदद की, लोगों की मदद करना न भूलें :) – Ninj