2017-01-23 10 views
1

Я пытаюсь присоединиться к пользовательской таблице в коллекцию клиентов. Обычай таблица:Magento JoinLeft

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

Я хочу, чтобы добавить user_id к каждому пункту, где customer_id соответствует linked_customer_id.

Я получил следующее сейчас, но я получаю:

Колонка не найден: 1054 Неизвестный столбец «main_table.entity_id»

$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

Я могу ошибаться, но я думаю, что потому что 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'. Спасибо за четкий ответ. –

 Смежные вопросы

  • Нет связанных вопросов^_^