加入集合以获取客户名称(对于管理网格)

时间:2010-06-23 05:28:48

标签: magento

我有一个自定义模块的表,其中包含以下列:

---------------
| 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 个答案:

答案 0 :(得分:3)

您需要加入名称为store的customer_entity_varchar表,
和attribute_id = 5,5,因为它是表eav_attribute中属性名称的id,其中所有属性都存储为
希望它可以帮到你

答案 1 :(得分:1)

您可以使用此代码获取客户的姓名

    $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'));