2013-02-28 8 views
5

मैं इस वैश्विक config है पाने के लिए: मेरे MySQL4 से स्थापित-0.1.0.php फ़ाइल मेंकैसे Magento तालिका नाम

<global> 
    <models> 
    <subscriber> 
     <class>Giftlab_Subscriber_Model</class> 
     <resourceModel>subscriber_resource</resourceModel> 
    </subscriber> 
    <subscriber_resource> 
     <class>Giftlab_Subscriber_Model_Resource</class> 
     <entities> 
      <records> 
       <table>subscriber_records</table> 
      </records> 
     </entities> 
    </subscriber_resource> 
    </models> 
    <resources> 
     <giftlab_subscriber_write> 
      <connection> 
       <use>core_write</use> 
      </connection> 
     </giftlab_subscriber_write> 
     <giftlab_subscriber_read> 
      <connection> 
       <use>core_read</use> 
      </connection> 
     </giftlab_subscriber_read> 
     <giftlab_subscriber_setup> 
      <setup> 
       <module>Giftlab_Subscriber</module> 
       <class>Giftlab_Subscriber_Model_Resource_Setup</class> 
      </setup> 
      <connection> 
       <use>core_setup</use> 
      </connection> 
     </giftlab_subscriber_setup> 
    </resources> 
</global> 

, मैं तालिका नाम पाने के लिए की जरूरत है। मैं यह कैसे करुं? मैं जानता हूँ कि यह कुछ इस तरह है:

$this->getTable('subscriber_resource/records') 

लेकिन वह केवल एक अपवाद Can't retrieve entity config: subscriber_resource/records पैदा करता है। टेबल नाम पुनर्प्राप्त करने के लिए मुझे क्या करने की ज़रूरत है?

+0

ईमानदार होने के लिए मैं हमेशा टैबलेटनाम जानता था, $-- getTable ('कुछ/चीज़') बस पूर्व और प्रत्यय जोड़ता है। तो वास्तव में यदि आप तालिका का नाम गधे करते हैं तो यह – Soundz

उत्तर

13

जवाब अपने आप पता चल जाँच, हालांकि धन्यवाद एलन तूफान के ट्यूटोरियल करने के लिए अपने निर्देशन के लिए @Yaroslav लिए, के रूप में है कि मदद की।

$this->getTable('subscriber/records'); 

जहां "ग्राहक" मॉडल (नहीं संसाधन), और "रिकॉर्ड" के लिए config प्रविष्टि का नाम है इकाई है:

जवाब है, मैं इस की जरूरत है। यह पता चला है कि जब Magento thinga/thingb पार्स करता है, तो यह हमेशा मानता है कि स्लैश से पहले उस चीज़ को मानना ​​है कि संसाधन प्राप्त करने के लिए <thinga><resourceModel>{resourcemodel} के लिए कॉन्फ़िगरेशन में देखकर, और फिर तालिका नाम प्राप्त करने के लिए <{resourcemodel}><entities><thingb><table> के लिए फिर से देख रहे हैं।

तो मेरी कॉन्फ़िगरेशन सही थी, मैं मॉडल और संसाधन के विचार के बीच उलझन में था। उम्मीद है कि यह किसी और समस्या पर फंसने में मदद करता है - मुझे विभिन्न ट्यूटोरियल में इस पर कोई स्पष्ट जानकारी नहीं मिली।

2

Magento पर आप Collections के साथ काम करते हैं।

$mysubscriber_recordsCollection = Mage::getModel('records/subscriber_records')->getCollection() 

चेक उपयोगी एलन तूफान साइट, विशेष रूप से tutorial on Magento models: एक नमूना देखें।

संपादित

सेटअप पर तालिका नाम यहाँ स्थापित प्राप्त करने के लिए एक विस्तृत नमूना है। $installer->getTable('records/subscriber_records') पर ध्यान दें जहां टेबल नाम लोड किया गया है।

<?php 
    echo 'Running This Upgrade: '.get_class($this)."\n <br /> \n"; 
    $installer = $this; 
    $installer->startSetup(); 
    $installer->run(" 
     CREATE TABLE `{$installer->getTable('records/subscriber_records')}` (
      `subscriber_records_id` int NOT NULL AUTO_INCREMENT, 
      PRIMARY KEY (`subscriber_records_id`) 
      ) ENGINE=InnoDB DEFAULT CHARSET=utf8 
    "); 
    $installer->endSetup(); 

सेटअप संसाधनों के लिए इस अन्य Alan Storm's tutorial

+2

हां काम करता है, लेकिन यह बहुत उच्च स्तर है - यहां मैंने कहा है कि मैं स्थापित एसक्यूएल में टेबल नाम प्राप्त करने का प्रयास कर रहा हूं, यह वास्तव में है जहां मैं टेबल बनाउंगा, इसलिए मैं अभी तक GetModel का उपयोग नहीं कर सकता। – Benubird

+0

ओच! आप सही हे। संपादित और जोड़ा जो आप खोज रहे हैं। बोनस के रूप में अन्य कोड को रखते हुए;) – Yaroslav

2

आप (जैसे catalog/category_product) एक संसाधन है कि नहीं एक संसाधन मॉडल की तालिका नाम प्राप्त करना चाहते हैं और आप एक सेटअप लिपि में नहीं हैं, तो आप इसे इस तरह कर सकते हैं:

$table = Mage::getSingleton('core/resource')->getTableName('catalog/category_product'); 

यह सभी एन: एम संबंधों के लिए सहायक है जहां आपको आमतौर पर मॉडल वर्ग की आवश्यकता नहीं होती है।

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