我有一个自定义模块的表,其中包含以下列:
---------------
| 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();
}
以上代码工作正常。但我想显示他们的名字而不是电子邮件。 任何人都可以帮我修改这个系列吗?
非常感谢任何帮助。 谢谢
答案 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'));