Case 1: After the Magento join, we want to have a EAV Collection as a result collection
//the ‘1’ is just a example of a where clause, you can totally miss this part, if you do not need it
$collection = Mage::getModel('catalog/product_link') ->useRelatedLinks() ->getProductCollection() ->joinTable('sales/order_item', 'product_id=entity_id', array('*'), 'entity_id=1', 'left');
Case 2: After the Magento join, We want to have Flat table Collection as a result collection
1. we get the attribute id for a specific EAV model and attribute name
$attribute = Model::getModel('eav/entity_attribute') ->loadByCode('customer', 'attribute_name');
2. We get the flat table collection model
$collection = Model::getResourceModel('sales/order_grid_collection') ->addAttributeToSelect('*');
3. We load the collection with LEFT JOIN on the attribute. In this example we will also join the collection to the order table because we have not customer_id in the order_grid table.
$collection->getSelect() ->join(array('s' => 'sales_flat_order'), 'main_table.entity_id = s.entity_id', array('order_id' => 'entity_id')) ->joinLeft(array('attribute_name' => 'customer_entity_varchar'), 's.customer_id = attribute_name.entity_id AND attribute_name.attribute_id = '. $attribute->getAttributeId(), array('attribute_name' => 'attribute_name.value'));
And at the end of both cases you just set the collection to the grid in the ordinary way:
$this->setCollection($collection);
P.S: I did not explain everything really detailed, because I usually do not read the explanations in the articles XD //But if you need something explained, let me know =)
Pingback: Display custom billing address checkout fields in admin sales order grid - gomagento2()