Magento 2 getTable davranışı


13

TL; DR: Magento 2'de getTable, bir kaynak toplama modelinden 2 farklı parametre için aynı tablo adını döndürecek yöntemi yapmanın bir yolu var mı ?

Detaylı Açıklama
Magento 1'den bir örnekle başlayacağım.
Diyelim ki bir masam var module_entiti1_entity2.
Bu tabloyu config.xmlböyle benim ilan etmem gerekiyordu

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

Sonra tablo adını örneğin böyle bir kaynak toplama modelinden alabilirsiniz:

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

Ama istersem aynı tablo için birden fazla takma ad kullanabilirim.
Benim config.xmlbölümüm olursa

<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>

Masamı 2 şekilde alabilirim:

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

Magento 2'de yukarıdaki gibi bir tablo bildirimi yoktur.
Tablo adımı böyle alabilirim $collection->getTable('module_entity1_entity2').
Magento'ya parametrenin parametreyle module_entity2_entity1aynı tablo adını döndürmesini söylemenin bir yolu var mı module_entity1_entity2?

Yanıtlar:


3

Aradığın şey setMappedTableName. Bunu kaynak modelinizde arayın:

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

Bunu bir işlevin içine koyabilir ve getTableyöntemi çağırmadan önce bunu çağırabilirsiniz .

Temel olarak, ne zaman istersem module_entity1_entity1bana module_entity1_entity2masayı ver diyor .


Öneri için teşekkürler, deneyeceğim ve sonuçlarla geri döneceğim. Önerilerinize göre, setMappedTableNamekaynak modeli yapıcımda kullanırsam, çalışmalıdır, değil mi? Bu, sınıftan başka bir yöntemden önce çağrılır.
Marius

Doğru, bence koyabileceğiniz en iyi yer bu yüzden kalıcı olarak eşlendi. Sadece belirli durumlarda çalışmasını istemiyorsanız.
Vernard Luz

Hey. İşe yarıyor. Bunu yapabilirsem iyi olur di.xml. Mümkün değilse kendi mekanizmamı uygulayacağım. Ama başlamak için buna ihtiyacım vardı. Teşekkür ederim.
Marius

Rica ederim, ben bir hayranıyım BTW. Size yardım etmek benim için bir zevk.
Vernard Luz
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.