마 젠토 2 getTable 동작


13

TL; DR : Magento 2 getTable에서 리소스 수집 모델로부터 메소드 가 두 개의 다른 매개 변수에 대해 동일한 테이블 이름을 리턴 하도록하는 방법 이 있습니까?

자세한 설명
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>

두 가지 방법으로 테이블을 검색 할 수 있습니다.

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

Magento 2에는 위와 같은 테이블 선언이 더 이상 없습니다.
나는 이렇게 테이블 이름을 얻을 수 있습니다 $collection->getTable('module_entity1_entity2').
매개 변수 module_entity2_entity1가 매개 변수 와 동일한 테이블 이름을 반환하도록 magento에 알리는 방법이 module_entity1_entity2있습니까?

답변:


3

당신이 찾고있는 것은입니다 setMappedTableName. 자원 모델 내에서 이것을 호출하십시오.

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

이것을 함수 안에 넣고 getTable메소드 를 호출하기 전에 호출 할 수 있습니다.

기본적으로 그것은 요청할 때마다 테이블을 module_entity1_entity1알려 module_entity1_entity2줍니다.


제안 주셔서 감사합니다, 나는 그것을 시도하고 결과를 다시 올 것이다. 권장 사항 setMappedTableName에 따라 내 자원 모델 생성자에서를 사용하면 제대로 작동합니까? 클래스에서 다른 메소드보다 먼저 호출됩니다.
Marius

사실, 그것은 당신이 그것을 영구적으로 매핑 할 수있는 가장 좋은 장소라고 생각합니다. 특정 경우에만 작동하지 않으려는 경우.
Vernard Luz 2016

야. 효과가있다. 내가 이것을 통해 할 수 있다면 좋을 것 di.xml입니다. 그것이 가능하지 않으면 나는 내 자신의 메커니즘을 구현할 것이다. 그러나 이것이 내가 시작하는 데 필요한 것입니다. 감사합니다.
Marius

천만에요, 저는 팬 BTW입니다. 당신을 도와주게되어 기쁩니다.
Vernard Luz
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.