Magento 2 getTable व्यवहार


13

TL; DR:getTable 2 अलग-अलग मापदंडों के लिए एक ही तालिका नाम वापस करने के लिए संसाधन संग्रह मॉडल से विधि बनाने के लिए Magento 2 में कोई रास्ता नहीं है ?

विस्तृत विवरण
मैं Magento के एक उदाहरण के साथ शुरू करूँगा। 1.
मान लीजिए कि मेरे पास एक तालिका है जिसे कहा जाता है module_entiti1_entity2
मुझे इस config.xmlतरह से इस तालिका को घोषित करने की आवश्यकता थी

<module_resource>
    <class>....</class>
    <entities>
         <entity1_entity2>
             <table>module_entiti1_entity2</table>
         </entity1_entity2>
    </entities>
</module_resource>

तब मुझे इस तरह के उदाहरण के लिए संसाधन संग्रह मॉडल से तालिका का नाम मिल सकता है:

$collection->getTable('module/entity1_entity2');

लेकिन अगर मैं चाहता हूं कि मैं एक ही टेबल के लिए कई उपनामों का उपयोग कर सकता हूं।
अगर मेरा config.xmlसेक्शन बन जाता है

<module_resource>
    <class>....</class>
    <entities>
         <entity1_entity2>
             <table>module_entiti1_entity2</table>
         </entity1_entity2>
         <entity2_entity1>
             <table>module_entiti1_entity2</table>
         </entity2_entity1>
    </entities>
</module_resource>

मैं अपनी तालिका 2 तरीकों से प्राप्त कर सकता हूं:

$collection->getTable('module/entity1_entity2');
$collection->getTable('module/entity2_entity1');

Magento 2 में ऊपर की तरह अधिक तालिका घोषणा नहीं है।
मैं अपनी तालिका का नाम इस तरह प्राप्त कर सकता हूं $collection->getTable('module_entity1_entity2')
क्या Magento को बताने का एक तरीका है कि पैरामीटर के module_entity2_entity1लिए पैरामीटर के समान तालिका नाम वापस करने के लिए module_entity1_entity2?

जवाबों:


3

आप जो खोज रहे हैं, वह है setMappedTableName। इसे अपने संसाधन मॉडल के अंदर कॉल करें:

$this->_resources->setMappedTableName('module_entity1_entity1', 'module_entity1_entity2');

आप इसे किसी फ़ंक्शन के अंदर रख सकते हैं, फिर getTableविधि को कॉल करने से पहले कॉल करें ।

मूल रूप से, यह कहता है कि जब भी मैं मांगता हूं module_entity1_entity1, मुझे module_entity1_entity2तालिका दें।


सुझाव के लिए धन्यवाद, मैं इसकी कोशिश करूंगा और परिणामों के साथ वापस आऊंगा। आपकी सिफारिशों से, यदि मैं setMappedTableNameअपने संसाधन मॉडल निर्माता में इसका उपयोग करता हूं तो इसे काम करना चाहिए, है ना? वह वर्ग से किसी अन्य विधि से पहले कहा जाता है।
Marius

सच है, मुझे लगता है कि यह सबसे अच्छी जगह है जिसे आप इसे रख सकते हैं ताकि यह स्थायी रूप से मैप हो जाए। जब तक आप इसे केवल विशिष्ट मामलों में काम करना चाहते हैं।
वर्नार्ड लूज

अरे। यह काम करता हैं। यह अच्छा होगा यदि मैं इसके माध्यम से कर सकता हूं di.xml। यदि यह संभव नहीं है तो मैं अपने स्वयं के तंत्र को लागू करूंगा। लेकिन यह वही है जो मुझे आरंभ करने के लिए आवश्यक था। धन्यवाद।
मारियस

आपका स्वागत है, मैं एक प्रशंसक हूँ BTW। यह मेरी खुशी है कि मैं आपकी मदद कर रहा हूं।
वर्नार्ड लूज
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.