protected function _getBaseCollectionSql() { $alias = 'attr_index_' . $this->getAttributeModel()->getId(); // Varien_Db_Select $baseSelect = clone parent::_getBaseCollectionSql(); // 1) remove from conditions $oldWhere = $baseSelect->getPart(Varien_Db_Select::WHERE); $newWhere = array(); foreach ($oldWhere as $cond) { if (!strpos($cond, $alias)) { $newWhere[] = $cond; } } if ($newWhere && substr($newWhere[0], 0, 3) == 'AND') { $newWhere[0] = substr($newWhere[0], 3); } $baseSelect->setPart(Varien_Db_Select::WHERE, $newWhere); // 2) remove from joins $oldFrom = $baseSelect->getPart(Varien_Db_Select::FROM); $newFrom = array(); foreach ($oldFrom as $name => $val) { if ($name != $alias) { $newFrom[$name] = $val; } } //it assumes we have at least one table $baseSelect->setPart(Varien_Db_Select::FROM, $newFrom); return $baseSelect; }
protected function _getBaseCollectionSql() { $alias = $this->_getAttributeTableAlias(); $baseSelect = clone parent::_getBaseCollectionSql(); $oldWhere = $baseSelect->getPart(Varien_Db_Select::WHERE); $newWhere = array(); foreach ($oldWhere as $cond) { if (!strpos($cond, $alias)) { $newWhere[] = $cond; } } if ($newWhere && substr($newWhere[0], 0, 3) == 'AND') { $newWhere[0] = substr($newWhere[0], 3); } $baseSelect->setPart(Varien_Db_Select::WHERE, $newWhere); $oldFrom = $baseSelect->getPart(Varien_Db_Select::FROM); $newFrom = array(); foreach ($oldFrom as $name => $val) { if ($name != $alias) { $newFrom[$name] = $val; } } $baseSelect->setPart(Varien_Db_Select::FROM, $newFrom); return $baseSelect; }