2012-03-23 7 views
9

मैं मानक कंसोल कमांड का उपयोग कर डेटाबेस से इकाइयों को उत्पन्न करने की कोशिश कर रहा हूं जैसा कि सिम्फनी 2 दस्तावेज में वर्णित है: http://symfony.com/doc/current/cookbook/doctrine/reverse_engineering.htmlसिद्धांत और symfony2 के साथ डेटाबेस दृश्य से इकाइयों को उत्पन्न करने के लिए कैसे करें

php app/console doctrine:mapping:convert --from-database --force yml "src/My/HomeBundle/Resources/config/doctrine/metadata/orm" 
php app/console doctrine:mapping:import MyHomeBundle yml 
php app/console doctrine:generate:entities MyHomeBundle 

इसके बाद, सभी तालिकाओं को सही ढंग से उत्पन्न किया जाता है। समस्या यह है कि यह डेटाबेस दृश्यों के लिए संस्थाएं उत्पन्न नहीं करेगा। जब मैं जोड़ने YML/मेरी/HomeBundle/संसाधन/config/सिद्धांत/मेटाडाटा/उदाहरण के लिए ORM src में अपने आप फ़ाइलें:

UserInGroup: 
    type: entity 
    table: user_in_group_view 
    fields: 
    id: 
     id: true 
     type: integer 
     unsigned: false 
     nullable: false 
     generator: 
     strategy: IDENTITY 
    userId: 
     type: integer 
     unsigned: false 
     nullable: false 
     column: user_id 
    userGroupId: 
     type: integer 
     unsigned: false 
     nullable: false 
     column: user_group_id 
    lifecycleCallbacks: { } 

मैं इस अपवाद जब php app/console doctrine:generate:entities MyHomeBundle चल:

Notice: Undefined index: My\HomeBundle\Entity\UserInGroup in C:\Users\ThisIsMe\Projects\SymfonyTestProject\vendor\doctrine\lib\Doctrine\ORM\Mapping\Driver\AbstractFileDriver.php line 121 

इसी प्रकार के सवाल था यहां पोस्ट किया गया: How to set up entity (doctrine) for database view in Symfony 2

मुझे पता है कि मैं इकाई वर्ग बना सकता हूं, लेकिन मुझे उम्मीद थी कि मैं इसे उत्पन्न कर सकता हूं ताकि अगर मैं अपना विचार बदलूं, तो मैं केवल इकाई वर्गों को पुन: उत्पन्न कर सकता हूं। कोई सुझाव?

उत्तर

2

अब आप केवल अपनी ओआरएम फाइलें बनाते हैं। आपको 2 और कदमों का पालन करना होगा। मैं आपको शुरुआत से पूरा कदम दूंगा।

ऐसा करने से पहले अपनी ओआरएम निर्देशिका में सभी yml फ़ाइलों को हटा दें जिन्हें आपने शुरुआती बनाया था।

मुझे आशा है कि MyHomeBundle अपने बंडल नाम

1).php app/console doctrine:mapping:convert yml ./src/My/HomeBundle/Resources/config/doctrine --from-database --force 

    Symfony2 generate entity from Database 

2).php app/console doctrine:mapping:import MyHomeBundle yml 

3).php app/console doctrine:generate:entities MyHomeBundle 

आशा इस मदद करता है।

+0

ये वही कदम हैं जिन्हें मैंने अपने प्रश्न में वर्णित किया है और यह सभी तालिकाओं के लिए संस्थाओं को उत्पन्न करता है जो विचारों के लिए नहीं हैं। उत्पन्न जेएमएल फाइलों के लिए गंतव्य पथ में अंतर है। मैंने केवल आपके मामले में आपके समाधान की कोशिश की है, लेकिन यह समस्या को हल नहीं करता है केवल तालिकाओं को इकाइयों में बदल दिया जाता है।मुझे पता है कि सिद्धांत (और सिम्फनी) के पुराने संस्करण किसी भी समस्या के बिना विचारों से बाहर निकल सकते हैं। – Kosta

0

एक ही समस्या है, मैं yml के बजाय xml का उपयोग करता हूं लेकिन यह वही होना चाहिए।

<entity name="Myapp\MyrBundle\Entity\MyEntity" table="myentity"> 

क्योंकि जब मैं डेटाबेस से मेरी ORM उत्पन्न ऐसा नाम है जो की तरह था:

<entity name="MyEntity" table="myentity"> 

तो सिद्धांत didn अपने ORM इकाई में

जांच करें कि नाम सही मार्ग, उदाहरण के लिए शामिल सही रास्ता समझ में नहीं आता है।

आशा है कि मैं स्पष्ट हूं और यह आपकी मदद करेगा!

+0

चेक किया गया। मैंने इसके बारे में सोचा और किसी भी भाग्य के बिना अलग संयोजन की कोशिश की। लेकिन फिर भी धन्यवाद। – Kosta

+0

क्या आप इकाई उपयोगकर्ता समूह को हटा सकते हैं? – Snroki

+0

बात यह है कि मैं अपने आप को इकाई बनाना नहीं चाहता था, लेकिन सिद्धांत बनाने के लिए मेरे लिए ऐसा करना है। अंत में, मैंने इकाई बनाई है और अब इसके साथ काम कर रहा है, लेकिन सवाल अभी भी बना हुआ है। – Kosta

-1

आप यहाँ देख सकते हैं: http://symfony.com/doc/current/cookbook/doctrine/reverse_engineering.html संस्था के लिए डाटाबेस से रिवर्स इंजीनियरिंग प्रक्रिया को पूरी तरह अभी तक लागू नहीं किया गया है:

"सिद्धांत उपकरण प्रलेखन कहते हैं, रिवर्स इंजीनियरिंग एक बार की प्रक्रिया आरंभ करने के लिए है एक परियोजना पर। सिद्धांत फ़ील्ड, इंडेक्स और विदेशी कुंजी बाधाओं के आधार पर आवश्यक मैपिंग जानकारी के लगभग 70-80% को परिवर्तित करने में सक्षम है। सिद्धांत प्राथमिक कुंजी या अर्थात् संचालन के रूप में विदेशी कुंजी के साथ व्यस्त संघों, विरासत प्रकारों, संस्थाओं को नहीं खोज सकता कैस्केड या लाइफसाइकिल घटनाओं जैसे संगठनों पर। जेनरेटेड इकाइयों पर कुछ अतिरिक्त काम बाद में आपके डोमेन मॉडल एसपी फिट करने के लिए आवश्यक होगा ecificities। "

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