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.