2017-01-23 4 views
1

고객 컬렉션에 사용자 정의 테이블을 조인하려고합니다. 사용자 정의 테이블은 다음과 같습니다Magento JoinLeft

+---------+--------------------+ 
| user_id | linked_customer_id | 
+---------+--------------------+ 
|  4 |     12 | 
+---------+--------------------+ 

내가 CUSTOMER_ID이 linked_customer_id 일치하는 각 항목에 USER_ID를 추가 할.

내가 지금 다음있어,하지만 난 수신 해요 : 발견되지

칼럼 : 1054 알 수없는 열을

$collection = Mage::getResourceModel('customer/customer_collection') 
     ->addNameToSelect() 
     ->addAttributeToSelect('entity_id') 
     ->addAttributeToSelect('email') 
     ->addAttributeToSelect('brand') 
     ->addAttributeToSelect('group_id') 
     ->joinAttribute('shipping_company', 'customer_address/company', 'default_shipping', null, 'left') 
     ->joinAttribute('billing_postcode', 'customer_address/postcode', 'default_billing', null, 'left') 
     ->joinAttribute('billing_city', 'customer_address/city', 'default_billing', null, 'left') 
     ->joinAttribute('shipping_telephone', 'customer_address/telephone', 'default_shipping', null, 'left') 
     ->joinAttribute('billing_region', 'customer_address/region', 'default_billing', null, 'left') 
     ->joinAttribute('shipping_country_id', 'customer_address/country_id', 'default_shipping', null, 'left') 
     ->joinAttribute('billing_vat_id', 'customer_address/vat_id', 'default_billing', null, 'left'); 

    $collection->getSelect()->joinLeft(
     array('salesrep' => 'custom_column'), 'main_table.entity_id=salesrep.user_id', 
     array('user_id' => 'salesrep.linked_customer_id') 
    ); 

    $this->setCollection($collection); 

답변

0

내가 틀릴 수도 'main_table.entity_id',하지만 난 생각 customer/customer 오히려 평면 모델보다 EAV 모델이기 때문에, 그것을 사용하는 테이블 별칭은 e보다는 main_table입니다 :

$collection->getSelect()->joinLeft(
    array('salesrep' => 'custom_column'), 
    'e.entity_id = salesrep.user_id', 
    array('user_id' => 'salesrep.linked_customer_id') 
); 

당신 것 예 : select 문을 디버깅하여 찾을 수 있습니다 (예 :

echo (string) $collection->getSelect(); 
+0

) 당신은 완전히 옳습니다. 그것이 사실이었습니다. 테이블 별칭은 실제로 'e'입니다. 분명한 답변을 주셔서 감사합니다. –