2012-01-27 7 views
3

Magento에서는 표준 제품 모음을 사용자 정의 속성의 사용자 정의 테이블에 조인 할 수 있습니다.Magento 사용자 정의 속성의 사용자 정의 테이블에 제품 모음 결합

예를 들어, 사용자 정의 제품 속성 warehouse_id와 사용자 정의 테이블웨어 하우스가 있고 제품 ​​이름,웨어 하우스 이름으로 된 콜렉션이 필요합니다.

코드 예제 :웨어 하우스 사용자 정의 테이블/수집하고 eav_entity_type 테이블에 있지 않기 때문에

$collection = Mage::getModel('catalog/product') 
    ->getCollection() 
    ->joinAttribute('warehouse_id', 'warehouse/warehouse', 'warehouse_id', null, 'inner'); 
var_dump($collection); 

그러나,이 작동하지 않습니다. 문제를 켜기

주변이 작업을 거라고 생각 :

$collection = Mage::getModel('warehouse/warehouse')->getCollection()->joinAttribute(etc. 

그러나, joinAttribute 내 사용자 지정 컬렉션에 방법이 아닙니다.

모든 예제, 모든 게시물, 위키 예제 등을 읽었으며이를 수행하는 방법을 파악할 수 없습니다. 특정 코드 예제가 완벽 할 것입니다.

답변

1

일부 매개 변수가 변경된 경우 joinAttribute가 작동 할 수 있다고 생각합니다. 나는 좀 더 익숙한 join and joinLeft이며, mysql 질의와 직접적으로 관련되어있다.

$collection = Mage::getModel('catalog/product') 
    ->getCollection()->getSelect() 
    ->joinLeft(array('warehouse_id'=>'warehouse'),'e.warehouse_id = warehouse_id.warehouse_id', array('name')); 
var_dump($collection); 

이 사용자 정의 테이블의 이름이 warehouse 있다고 가정하고 사용자 정의에 해당 warehouse_id 사용자 정의 테이블의 필드 속성은 warehouse_id를 호출됩니다. 또한 사용자 정의 테이블의웨어 하우스 이름 필드가 name 인 것으로 가정합니다. 대신 직접 테이블을 이름으로 이런 일을 할 필요가 있습니다

$collection = Mage::getModel('catalog/product') 
    ->getCollection()->getSelect() 
    ->joinLeft(array('warehouse_id'=>$this->getTable('warehouse/warehouse')),'e.warehouse_id = warehouse_id.warehouse_id', array('name')); 
var_dump($collection); 

을 어느 작업 라인으로 위해서 var_dump 라인을 교체하는 경우 :

echo $this->escapeHtml($collection->getSelect()); 

을 그리고 여기 그 결과 SQL 쿼리를 게시 할 수 있습니다.

관련 문제