diff --git a/app/code/community/JR/AttributeOptionImage/Model/Eav/Mysql4/Entity/Attribute/Option.php b/app/code/community/JR/AttributeOptionImage/Model/Eav/Mysql4/Entity/Attribute/Option.php index 7da06d9..134e134 100644 --- a/app/code/community/JR/AttributeOptionImage/Model/Eav/Mysql4/Entity/Attribute/Option.php +++ b/app/code/community/JR/AttributeOptionImage/Model/Eav/Mysql4/Entity/Attribute/Option.php @@ -4,28 +4,36 @@ class JR_AttributeOptionImage_Model_Eav_Mysql4_Entity_Attribute_Option extends M { public function getAttributeOptionImages() { - $select = $this->getReadConnection() - ->select() - ->from($this->getTable('eav/attribute_option'), array('option_id', 'image')); - - return $this->getReadConnection()->fetchPairs($select); + return $this->getAttributeColumnValue('image'); } public function getAttributeOptionThumbs() { - $select = $this->getReadConnection() - ->select() - ->from($this->getTable('eav/attribute_option'), array('option_id', 'thumb')); - - return $this->getReadConnection()->fetchPairs($select); + return $this->getAttributeColumnValue('thumb'); } public function getAttributeOptionHex() { + return $this->getAttributeColumnValue('hex'); + } + public function getAttributeColumnValue($columnName) + { + /** + * Reason using static instead of $_property because resource is not singleton + * and query is called multiple times on same table with same arguments + * because multiple instances exist of that option + */ + static $return = array(); + if (isset($return[$columnName])){ + return $return[$columnName]; + } + $select = $this->getReadConnection() ->select() - ->from($this->getTable('eav/attribute_option'), array('option_id', 'hex')); + ->from($this->getTable('eav/attribute_option'), array('option_id', $columnName)) + ->where("$columnName != ''"); - return $this->getReadConnection()->fetchPairs($select); + $return[$columnName] = $this->getReadConnection()->fetchPairs($select); + return $return[$columnName]; } } \ No newline at end of file