6

मैं किसी इकाई के सभी परिवर्तन लॉग करना चाहता हूं। मैंने StofDoctrineExtensionsBundle द्वारा प्रदान की गई Loggable सिद्धांत एक्सटेंशन में देखा।संग्रह करने वाली इकाई को लॉग कैसे करें?

मुझे यह उन क्षेत्रों के लिए काम करना पड़ा जो साधारण डेटा स्टोर करते हैं, उदा। स्ट्रिंग और पूर्णांक। लेकिन मेरी इकाई में किसी अन्य इकाई के लिए बहुत से संबंध हैं, उदा। Tags

InvalidMappingException: Cannot versioned [tags] as it is collection in object - Hn\AssetDbBundle\Entity\Asset 

वहाँ अपने रिश्तों के साथ एक इकाई लॉग इन करने का कोई तरीका है:

मैं यह त्रुटि मिल रहा है? मुझे किसी अन्य बंडल पर स्विच करने में कोई फर्क नहीं पड़ता।

+0

यहां एक [संबंधित गिटहब पर संबंधित समस्या] है (https://github.com/Atlantic18/DoctrineExtensions/issues/1160)। –

उत्तर

4

वर्तमान में कोई भी बंडल/एक्सटेंशन इस कार्यक्षमता को बॉक्स से बाहर नहीं रखता है। एक विकल्प इसे स्वयं लागू करना होगा। यह Doctrine Listeners का उपयोग करके किया जा सकता है। विशेष रूप से आपको postUpdate और postPersist ईवेंट सुनने की आवश्यकता है - ये तब होता है जब इकाई अद्यतन होती है और वहां आपके टैग को संग्रहीत और स्टोर किया जाता है।

एक और विकल्प ManyToMany संबंध से छुटकारा पाने के लिए है। इसके लिए एक मध्यवर्ती इकाई AssetTag बनाएं जिसमें OneToManyAsset और Tag दोनों के साथ संबंध होगा। ऐसा करने के बाद, आप EntityAudit सिद्धांत विस्तार का उपयोग कर सकते हैं, जो इस प्रकार के रिश्तों का समर्थन करता है।

+0

ध्यान दें कि लॉगगेबल भी इंटरमीडिएट इकाई के निर्माण का पता लगा सकता है। –

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