2012-11-30 15 views
10

मुझे एकाधिक डेटाबेस के साथ काम करने के लिए PropelORM सेट करने में कुछ समस्याएं हैं। मुझे प्रलेखन में कुछ भी उपयोगी नहीं मिला।PropelORM v1 एकाधिक डेटाबेस

  1. कई डेटाबेस से जनरेट कर रहा है स्कीमा

    मैं पहली बार डेटाबेस स्कीमा में कोई परिवर्तन करने के लिए और फिर

    $ propel-gen . reverse 
    

    Schema.xml प्राप्त करने के लिए चलाने के पसंद करते हैं। क्या होगा अगर मेरे सिस्टम में एक डेटाबेस अधिक हो? क्या यह कई स्कीमा उत्पन्न कर सकता है? मुझे प्रलेखन बिल्डटाइम-conf.xml से बनाया जाना है, लेकिन यह मेरे लिए कुछ भी नहीं करता है।

  2. जनरेट कर रहा है वर्गों

    मान लीजिए कि मैं अलग स्कीमा blog.schema.xml और platform.schema.xml करने के लिए बनाया करते हैं। क्या यह संभव है:

    1. प्रत्येक स्कीमा के लिए एक अलग वर्ग उपसर्ग है? build.properties में मैं propel.classPrefix सेट कर सकता हूं लेकिन यह प्रत्येक स्कीमा के लिए वैश्विक स्तर पर काम करेगा।

    2. प्रत्येक स्कीमा के लिए एक अलग परियोजना नाम है? build.properties में मैं propel.project सेट कर सकता हूं और यह कक्षा निर्देशिका में एक निश्चित निर्देशिका बनाएगा। अभी सभी वर्ग एक ही स्थान पर जाएंगे। यदि मैं दोनों स्कीमा में एक ही टेबल नाम का उपयोग करूंगा तो एक वर्ग दूसरे को ओवरराइट कर देगा।

समाधान मैं अपने दम पर आ सकता है एक निश्चित डेटाबेस लेकिन मैं और अधिक सुरुचिपूर्ण समाधान पसंद करेंगे के लिए एक 2 अलग निर्देशिका सेटअप है।

+1

वे संसाधन उपयोगी हो सकता है: http://propelorm.org/cookbook/using-sql-schemas.html http://trac.propelorm.org/ticket/940 –

+0

आप फ़्रॉस्टी धन्यवाद। दस्तावेज स्पष्ट है लेकिन जब मैं दिशानिर्देशों का पालन करना शुरू करता हूं तो यह सब एक अलग तरीके से काम करता है। मैनुअल propel.schema.autoPrefix पैरामीटर के बारे में कहते हैं। यह मेरे लिए ऑटो उपसर्ग कक्षा नहीं है। मेरे लिए यह एकमात्र चीज है जब propel.schema.autoNamespace को सत्य पर सेट किया गया है, तो यह इसे FALSE पर ओवरराइट करता है (शायद सीधे नहीं, लेकिन यह परिणाम है)। –

+0

पैकेज http://propelorm.org/cookbook/multi-component-data-model.html दस्तावेज़ीकरण के अनुसार भी काम नहीं करते हैं। यह कहता है कि यदि आप डाटाबेस स्तर पर पैकेज सेट करते हैं तो यह कक्षाओं/my_project/package_name में फाइलें बनाएगा, जबकि मेरे लिए यह my_project dir नहीं बनायेगा, सभी संकुल सीधे कक्षा में जाते हैं। बस स्पष्ट होने के लिए मुझे git से propel1 का नवीनतम संस्करण मिला। –

उत्तर

1

क्या आप अपनी स्कीमा से <database> लाइन पोस्ट कर सकते हैं?

<database package="blog" name="blog" defaultIdMethod="native"> 

अपने blog.schema.xml के अंदर यह आप के लिए एक नया निर्देशिका उत्पन्न करनी चाहिए:

जब तक आप निम्नलिखित है के रूप में

। यदि आप प्रोपेल को आपके लिए उन लोगों को आलसी लोड करते हैं, तो आप सही हैं कि आप टकराव प्राप्त करेंगे, इसलिए मैंने schema.xml में मैन्युअल रूप से अपनी टेबल पर कुछ प्रीपेड किया है (जो चीजों को संभालने के लिए सबसे प्रभावी चीज नहीं हो सकता है)।

लेकिन आप की तरह कुछ कर सकते हैं:

  1. blog.schema.xml में:

    <table name="users" phpName="blogUsers" idMethod="native"> 
    
  2. platform.schema.xml में:

    <table name="users" phpName="platformUsers" idMethod="native"> 
    

यह मेरे लिए ठीक काम किया।

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