/** * Join a meta field to the query * * @param string $field * @return $this */ protected function _joinMetaField($field) { $model = $this->getNewEmptyItem(); if ($model->hasMeta()) { if (!isset($this->_metaFieldsJoined[$field])) { $alias = $this->_getMetaFieldAlias($field); $meta = new Varien_Object(array('key' => $field, 'alias' => $alias)); Mage::dispatchEvent($model->getEventPrefix() . '_join_meta_field', array('collection' => $this, 'meta' => $meta)); if ($meta->getCanSkipJoin()) { $this->_metaFieldsJoined[$field] = $meta->getAlias(); } else { $condition = "`{$alias}`.`{$model->getMetaObjectField()}`=`main_table`.`{$model->getResource()->getIdFieldName()}` AND " . $this->getConnection()->quoteInto("`{$alias}`.`meta_key`=?", $field); $this->getSelect()->joinLeft(array($alias => $model->getMetaTable()), $condition, ''); $this->_metaFieldsJoined[$field] = $alias . '.meta_value'; } } return $this->_metaFieldsJoined[$field]; } return false; }