मैंने स्क्रैच से एक सिम्फनी 2 प्रोजेक्ट शुरू किया है जहां मैंने FOSUserBundle स्थापित किया था।yml- आधारित इकाइयों के संबंध में FOSUserBundle का उपयोग करें
फिर, मैंने लिखा है (वास्तव में, ओआरएम डिजाइनर के साथ जेनरेट किया गया है) कुछ संस्थाएं जिनके बीच, और उपयोगकर्ता इकाई के बीच संबंध होने की आवश्यकता है।
मैं Items
Users
से संबंधित, Collections
Users
से संबंधित है कि समूह Items
, और इतने पर।
जब से मैं FOSUserBundle इस्तेमाल किया मैं केवल एक बुनियादी उपयोगकर्ता वर्ग (https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Resources/doc/index.md, कदम 3a) एनोटेशन का उपयोग परिभाषित किया गया है, कोई config/doctrine
फ़ोल्डर और उस में कोई User.yml
फ़ाइल।
मैंने फिर MyBundle/Resources/config/doctrine
फ़ोल्डर बनाया और ऊपर उल्लिखित yml
फ़ाइलों को जोड़ा।
जब मैं कमांड लाइन उपकरण के साथ इकाइयों को उत्पन्न करने का प्रयास करता हूं तो सब कुछ ठीक काम करता है: यह मेरी yml फ़ाइलों से संस्थाएं बनाएगा।
हालांकि, इस बिंदु पर, ऊपर ब्राउज़रों में वह URL यहां लॉगिन पहले काम (जब मैं केवल FOSUserBundle स्थापित किया था) लोड करने की कोशिश इस त्रुटि फेंक देगा:
MappingException: No mapping file found named '/var/www/concert/src/X/MyBundle/Resources/config/doctrine/User.orm.yml' for class 'X\MyBundle\Entity\User'.
के बाद कार्रवाई, इस तरह के सीआरयूडी तर्क उत्पन्न करने के रूप में, जब तक मेरे पास config/doctrine
फ़ोल्डर में *.orm.ym
एल फ़ाइल है, तब तक काम नहीं करेगा। अगर मैं उन्हें हटा देता हूं, सीआरयूडी पीढ़ी काम करेगी, लेकिन वास्तविक mysql टेबल की पीढ़ी नहीं होगी।
इनके साथ जुगलिंग मुझे एक बिंदु पर ले जाता है जहां मैं टेबल भी प्राप्त कर सकता हूं, लेकिन फिर वास्तविक ऐप काम नहीं करता है अगर मैं किसी भी यूआरएल का उपयोग करने का प्रयास करता हूं जहां नव निर्मित सीआरयूडी शामिल है क्योंकि संस्थाएं हैं yml पर आधारित (जिसे मैं चीजों को "काम करने" के लिए हटा देता हूं) इसमें कोई मैपिंग ज्ञान नहीं होगा।
क्या यह मूल रूप से गलत है? FOSUserBundle के आधार पर उपयोगकर्ता इकाई के साथ संबंध में yml- आधारित इकाइयां रखने के लिए और अभी भी अच्छी कमांड लाइन पीढ़ी के उपकरण प्राप्त करने में सक्षम हैं?
यह पूरी तरह से किया। मुझे संदेह था कि इसे कुछ प्रकार का इशारा होना था जो मैं सिम्फनी को यह स्वीकार करने के लिए दे सकता था।इसका एक अवलोकन यह है कि मुझे तालिका मैपिंग को परिभाषित करने के लिए User.orm.yml में एक पंक्ति भी जोड़ने की आवश्यकता है, क्योंकि डिफ़ॉल्ट रूप से यह उपयोगकर्ता नामक एक तालिका की तलाश करेगा, इसलिए मैंने तालिका जोड़ा: fos_user (जिस नाम को मैं विरासत में मिला मैंने फोस बंडल से उपयोगकर्ता तालिका जेनरेट की)। – cbaltatescu
ओह, आप सही हैं 'दस्तावेज़: fos_user' का उल्लेख दस्तावेज़ों में किया गया है, लेकिन मैंने इसे yaml में याद किया। इसे तुरंत ठीक कर देगा। – dbrumann
आप विरासत को कैसे कॉन्फ़िगर करते हैं? मैं इसे आज़माता हूं लेकिन 'php ऐप/कंसोल सिद्धांत: स्कीमा: अद्यतन - डंप-एसक्यूएल' रिटर्न 'तालिका बनाते हैं fos_user (आईडी नल, प्राथमिक कुंजी (आईडी) नहीं) निर्णायक चरित्र सेट utf8 COLLATE utf8_unicode_ci इंजन = InnoDB'। यह विरासत कॉलम नहीं जोड़ता है। –