2012-01-05 15 views
5

में शामिल नहीं होता है मेरे पास 2 इकाइयां, उत्पाद और उत्पाद_Types हैं।Symfony2 संग्रह प्रपत्र कॉलम

manyToOne: 
    product: 
     targetEntity: Product 
     joinColumn: 
     name: product_id 
     referencedColumnName: id 

मैं एक नया उत्पाद जोड़ते हैं, मैं एक ही फार्म के साथ इस उत्पाद के लिए प्रकार जोड़ने में सक्षम होना चाहते हैं:

यह उन दोनों के बीच रिश्ता है।

  ->add('productColor', 'collection', array("type" => new ProductColorType(), "allow_add" => true, 'prototype' => true)) 

इस प्रकार मैं फॉर्म को एम्बेड करता हूं।

'डेटा_क्लास' दोनों उत्पाद प्रकार और उत्पाद प्रकार के लिए सेट है, और जब मैं प्रकार के साथ एक नया उत्पाद जोड़ता हूं, तो सब कुछ ठीक है, एक चीज़ को छोड़कर, सिम्फनी/सिद्धांत 'product_id' कॉलम सेट नहीं करता है, इसलिए वहां होगा मेरे उत्पाद और उसके प्रकार के बीच कोई रिश्ता नहीं है।

+0

यह मजाकिया है, मैं इस सवाल से पहले उम्र के लिए एक समाधान की तलाश कर रहा था, और फिर मुझे एक समाधान मिला, मैंने उत्पाद को जारी रखने से पहले इस प्रकार के उत्पादों को सेट किया। यह समस्या हल करता है, लेकिन फिर भी, मुझे नहीं लगता कि यह इस तरह से किया जाना चाहिए। – Tom

उत्तर

0

अपने इकाई प्रबंधक फ्लश से पहले उत्पाद को बनाए रखने का प्रयास करें।

5

आपको अपनी संस्थाओं को मैन्युअल रूप से लिंक करने की आवश्यकता है। न तो सिम्फनी और न ही सिद्धांत आपके लिए यह करते हैं। आप एक ऐड के भीतर उदाहरण के लिए ऐसा कर सकते हैं ...() विधि:

  • आप Symfony मास्टर
  • चल रहे हैं:

    public function getProductColors() 
    { 
        return $this->productColors; 
    } 
    
    public function addProductColor(ProductColor $color) 
    { 
        $this->productColors->add($color); 
        $color->setProduct($this); 
    } 
    

    फिर तीन आवश्यकताओं काम करने के लिए इस क्रम में पूरा किया जाना है

  • आप सिद्धांत 2.1.7/2.2.3
  • चल रहे हैं आप false
करने के लिए "संग्रह" क्षेत्र के "by_reference" विकल्प सेट

यदि आप यह सब करते हैं, तो आपको ठीक होना चाहिए।

+0

addProductColor() में कॉलिंग सेट प्रोडक्ट() काम करेगा। हालांकि, दस्तावेज़ीकरण के मुताबिक, झूठ से_reference को सेट करना चाहिए प्रोडक्टकोलर्स(), जो कि ऐसा प्रतीत नहीं होता है। कोई उपाय? –

+0

इस पर निर्भर करता है कि ऐड/निकालें विधियां उपलब्ध हैं या नहीं। यदि वे हैं, तो वे सेटटर के बजाय उपयोग किया जाता है। –

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