सही सिद्धांत कैस्केड संबंध कैसे सेट करें? - PHP, सिम्फनी, सिद्धांत, सोनाटा-व्यवस्थापक

मेरे पास एक पुरानी पृष्ठ इकाई और एक नई समतुल्य इकाई है। मेरा पृष्ठ .orm.xml अब निम्नलिखित को सम्‍मिलित करने के लिए संपादित किया गया है:

    <one-to-many target-entity="AppBundleEntityEquivalent" field="equivalents">
<cascade>
<cascade-all/>
</cascade>
</one-to-many>

... और मेरे PageAdmin वर्ग को निम्नलिखित शामिल करने के लिए संपादित किया गया है:

            ->add("equivalents", "sonata_type_collection", array(
"label" => "Equivalents",
"cascade_validation" => true,
"required" => false,
), array(
"edit" => "inline",
"inline" => "table",
"targetEntity" => "AppBundleEntityEquivalent",
))

... और मेरी समतुल्य इकाई परिभाषा में निम्नलिखित शामिल हैं:

/**
* @var ApplicationSonataPageBundleEntityPage
* @ORMManyToOne(targetEntity="ApplicationSonataPageBundleEntityPage", cascade={"persist"})
*/
private $page;

अब तक सब ठीक है। जब मैं किसी पृष्ठ को संपादित करता हूं, तो मुझे एक चालाक इंटरफ़ेस मिलता है जो मुझे इनलाइन फॉर्म में नए समतुल्य रिकॉर्ड जोड़ने और संपादित करने की अनुमति देता है। बहुत अच्छा।

मेरी समस्या तब आती है जब मैं पेज संस्था को बचाने की कोशिश करता हूं। मुझे निम्नलिखित त्रुटि मिलती है:

के माध्यम से एक नई इकाई मिलीसंबंध "ApplicationSonataPageBundleEntityPage # समकक्ष" जो नहीं था कैसकेड के लिए कॉन्फिगर किए गए संचालन को इकाई के लिए कॉन्फ़िगर किया गया है: कुछ समकक्ष। इस समस्या को हल करने के लिए: या तो EntityManager को # persist () जारी रखें यह अज्ञात इकाई या कॉन्फ़िगर झरना इस संघ को बनाए रखता है उदाहरण के लिए मैपिंग @ManyToOne (.., झरना = {"दृढ़ता"})।

मैं क्या गलत कर रहा हूं? कंधे "मेरी मौजूदा कैस्केड परिभाषा इस व्यवहार को कवर नहीं करती है? मैं इसे ठीक करने के लिए क्या कर सकता हूं?

उत्तर:

उत्तर № 1 के लिए 1

परिभाषाएँ याद आ रही हैं संघों के क्षेत्र। जोड़ना मैप किए गए-दर सेवा मेरे:

<one-to-many target-entity="AppBundleEntityEquivalent" field="equivalents" mapped-by="page">
<cascade>
<cascade-all/>
</cascade>
</one-to-many>

तथा inversedBy सेवा मेरे:

/**
* @var ApplicationSonataPageBundleEntityPage
* @ORMManyToOne(targetEntity="ApplicationSonataPageBundleEntityPage", inversedBy="equivalents", cascade={"persist"})
*/
private $page;

संबंधित सवाल
सबसे लोकप्रिय