присоединиться к коллекции, чтобы получить имя клиента (для сетки администратора) - PullRequest
6 голосов
/ 23 июня 2010

У меня есть таблица для моего пользовательского модуля со следующими столбцами:

---------------
| custom_table|
---------------
| id
| seller_id
| buyer_id
| ...
---------------

seller_id -> customer_enity [entity_id]
buyer_id -> customer_entity [entity_id]

Теперь я хотел бы показать имя продавца и имя покупателя в сетке администратора. Я не мог понять, как извлечь имя продавца и имя покупателя из сущностей клиентов. Но я знаю, как получить их электронные письма как:

protected function _prepareCollection()
{
  $collection = Mage::getModel('custommodule/custommodule')->getCollection();  
  $collection->getSelect()
        ->join( array('ce1' => 'customer_entity'), 'ce1.entity_id=main_table.seller_id', array('seller_email' => 'email'))
        ->join( array('ce2' => 'customer_entity'), 'ce2.entity_id=main_table.buyer_id', array('buyer_email' => 'email'));
  #echo $collection->getSelect()->__toString();
  $this->setCollection($collection);
  return parent::_prepareCollection();
}

Этот код выше работает нормально. Но я хочу отображать их имена вместо электронной почты. Может ли какой-нибудь орган помочь мне изменить эту коллекцию?

Любая помощь очень ценится. Спасибо

Ответы [ 2 ]

3 голосов
/ 02 сентября 2010

Вам нужно объединиться с таблицей customer_entity_varchar, где имя - store,
и attribute_id = 5, 5, потому что это идентификатор имени атрибута в таблице eav_attribute, где хранятся все атрибуты
надеюсь, это поможетвы

1 голос
/ 20 февраля 2016

Вы можете использовать этот код, чтобы получить имя и фамилию клиента

    $this->_infoCollection = Mage::getModel('custommodule/custommodule')->getCollection()
    ->addFieldToFilter('ce2.attribute_id', array('eq' => array(5)))
    ->addFieldToFilter('ce3.attribute_id', array('eq' => array(7)));  

    $this->_infoCollection->getSelect()
    ->join( array('ce1' => 'customer_entity'), 'ce1.entity_id=main_table.customer_id', array('customer_email' => 'email'))
    ->join( array('ce2' => 'customer_entity_varchar'), 'ce2.entity_id=ce1.entity_id', array('customer_first_name' => 'value'))
    ->join( array('ce3' => 'customer_entity_varchar'), 'ce3.entity_id=ce1.entity_id', array('customer_last_name' => 'value'));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...