TL; DR: Czy jest jakiś sposób w Magento 2, aby metoda getTable
z modelu gromadzenia zasobów zwracała tę samą nazwę tabeli dla 2 różnych parametrów?
Szczegółowe wyjaśnienie
Zacznę od przykładu z Magento 1.
Załóżmy, że mam tabelę o nazwie module_entiti1_entity2
.
Musiałem zadeklarować tę tabelę w config.xml
ten sposób
<module_resource>
<class>....</class>
<entities>
<entity1_entity2>
<table>module_entiti1_entity2</table>
</entity1_entity2>
</entities>
</module_resource>
Następnie mogę uzyskać nazwę tabeli z modelu kolekcji zasobów, na przykład w następujący sposób:
$collection->getTable('module/entity1_entity2');
Ale jeśli chcę, mogę użyć wielu aliasów dla tej samej tabeli.
Jeśli moja config.xml
sekcja stanie się
<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>
Mogę odzyskać swój stół na 2 sposoby:
$collection->getTable('module/entity1_entity2');
$collection->getTable('module/entity2_entity1');
W Magento 2 nie ma już deklaracji tabeli jak wyżej.
Mogę uzyskać nazwę mojego stołu w ten sposób $collection->getTable('module_entity1_entity2')
.
Czy istnieje sposób, aby powiedzieć magento, że parametr module_entity2_entity1
zwraca tę samą nazwę tabeli co parametr module_entity1_entity2
?
źródło
setMappedTableName
użyję konstruktora modelu zasobów, powinien on działać, prawda? Ten jest wywoływany przed jakąkolwiek inną metodą z klasy.di.xml
. Jeśli nie jest to możliwe, wdrożę własny mechanizm. Ale tego potrzebowałem, aby zacząć. Dziękuję Ci.