2012-01-07 12 views
5

मैं gedmo nested-set विस्तार blog, जहां कई माता पिता नोड्स देखते हैं से उदाहरण को दोहराने के लिए कोशिश कर रहा हूँ। वहां आप movable पैरेंट नोड्स के साथ-साथ बच्चों (जो nested set­Wikipedia के लिए विशिष्ट है) बनाने में सक्षम हैं।बढ़ते "रूट" या माता-पिता नोड्स - सिद्धांत NestedSet विस्तार

कठिन टिप्पणी अनुभाग पढ़ना, सामान्य सलाह @Gedmo\TreeRoot annotation/mapping को हटा रही है, लेकिन यदि मैं ऐसा करता हूं, तो मैं रूट नोड्स को स्थानांतरित करने में सक्षम हूं, लेकिन पेड़ विशेष रूप से बाएं और दाएं आईडी को तोड़ देता है। अगर मैं TreeRoot रखता हूं, और रूट नोड्स को स्थानांतरित करने का प्रयास करता हूं तो मुझे उम्मीद है कि "नो नोड भाई बहन" या उन पंक्तियों के साथ कुछ मिलता है।

विस्तार ब्लॉग पर लाइव उदाहरण देख रहे हैं, आप देख सकते हैं कि आप बिना माता-पिता के श्रेणी बना सकते हैं और इसे ऊपर या नीचे ले जा सकते हैं।

मेरे श्रेणी इकाई - प्रासंगिक भागों:

class Category 
{ 
    /** 
    * @Gedmo\TreeLeft 
    * @ORM\Column(name="lft", type="integer") 
    */ 
    private $lft; 

    /** 
    * @Gedmo\TreeLevel 
    * @ORM\Column(name="lvl", type="integer") 
    */ 
    private $lvl; 

    /** 
    * @Gedmo\TreeRight 
    * @ORM\Column(name="rgt", type="integer") 
    */ 
    private $rgt; 

    /** 
    * @Gedmo\TreeRoot 
    * @ORM\Column(name="root", type="integer", nullable=true) 
    */ 
    private $root; 

    /** 
    * @Gedmo\TreeParent 
    * @ORM\ManyToOne(targetEntity="Category", inversedBy="children") 
    */ 
    private $parent; 

    /** 
    * @ORM\OneToMany(targetEntity="Category", mappedBy="parent") 
    * @ORM\OrderBy({"lft" = "ASC"}) 
    * @Exclude 
    */ 
    private $children; 
} 

प्रश्न: अनेक रूट पेड़ बनाने के लिए (मैं नकली श्रेणी है कि एक मूल हो जाएगा बनाने से बचें, और के बच्चे के रूप में सब कुछ जोड़ना चाहते हैं वह नोड), और रूट नोड्स को ऊपर और नीचे ले जाने में सक्षम हो?

पीएस मैं मास्टर शाखा में हूं।

+0

क्या आपको इसके लिए कोई समाधान मिला? – lopsided

+0

@lopsided अंत में मैंने वह किया है जो मैं टालना चाहता था। नकली एक के रूप में "नकली" पेड़ रूट श्रेणी और अन्य सभी रूट नोड्स जोड़ना। यह काम करता है, यद्यपि कुछ डाउनसाइड्स हैं, नकली श्रेणी को छिपाने के दौरान श्रेणियों (मेरे मामले में) रूपों को प्रदर्शित करते समय या उन्हें अनियंत्रित सूची आदि के अंदर प्रस्तुत करते समय –

+0

जो भी मैं अब साथ चला गया था। मेरे लिए ठीक काम करता है, लेकिन मैं पेड़ तोड़ता रहता हूं, यकीन नहीं कि यह पूरी तरह से मजबूत है। – lopsided

उत्तर

-2

आप उन्हें रूट करने के लिए रूट नोड्स के आईडी को स्वैप कर सकते हैं।

1

पेड़ समवर्ती अद्यतनों पर टूट जाएगा tree locking दस्तावेज देखें। जब पेड़ अपडेट होता है तो यह दो परमाणु अद्यतन प्रश्न चलाता है, जो बदले में एक अलग राज्य के साथ एक समवर्ती अनुरोध से चलाया जा सकता है, जो किसी के बारे में नहीं जानता है। जब इसे कवर किया जाता है, तो पेड़ को इसकी स्थिरता बनाए रखना चाहिए, मैंने सफलतापूर्वक 100K - 1M नोड पेड़ के लिए इस एक्सटेंशन का उपयोग किया है, जो कि जड़ों पर आधारित था।

यदि आप सुनिश्चित हैं कि ये पेड़ ब्रेक समवर्ती से संबंधित नहीं हैं, तो कृपया उपयोग केस विवरण के साथ github पर कोई समस्या खोलें।

0

नकली रूट बनाने का आपका समाधान श्रेणी मेरे दृष्टिकोण में सबसे अच्छा है। तब आपकी असली जड़ें इस नकली जड़ के बच्चे होंगे।

नाम से क्रमबद्ध पूर्ण पेड़ को प्रदर्शित करने के लिए, बस अपने नकली रूट नोड पर रिपोजिटरी फ़ंक्शन रीडर का उपयोग करें।

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

  • कोई संबंधित समस्या नहीं^_^