Ответы пользователя по тегу Magento
  • Magento get table without prefix

    max_mara
    @max_mara Автор вопроса
    Часто так бывает, что сам себя спросил, сам себе ответил.

    Я переопределил метод getTableName
    и сделал как написано тут

    stackoverflow.com/questions/2417134/how-to-override-table-name-andprefix-in-magento-model

    class Meta_Mass_Model_Resource extends Mage_Core_Model_Resource
    {
        public function getTableName($modelEntity)
        {
            $tableSuffix = null;
            if (is_array($modelEntity)) {
                list($modelEntity, $tableSuffix) = $modelEntity;
            }
    
            $parts = explode('/', $modelEntity);
            if (isset($parts[1])) {
                list($model, $entity) = $parts;
                $entityConfig = false;
                if (!empty(Mage::getConfig()->getNode()->global->models->{$model}->resourceModel)) {
                    $resourceModel = (string)Mage::getConfig()->getNode()->global->models->{$model}->resourceModel;
                    $entityConfig  = $this->getEntity($resourceModel, $entity);
                }
    
                if ($entityConfig && !empty($entityConfig->table)) {
                    $tableName = (string)$entityConfig->table;
                } else {
                    Mage::throwException(Mage::helper('core')->__('Can\'t retrieve entity config: %s', $modelEntity));
                }
            } else {
                $tableName = $modelEntity;
            }
    
            Mage::dispatchEvent('resource_get_tablename', array(
                'resource'      => $this,
                'model_entity'  => $modelEntity,
                'table_name'    => $tableName,
                'table_suffix'  => $tableSuffix
            ));
    
            $mappedTableName = $this->getMappedTableName($tableName);
            if ($mappedTableName) {
                $tableName = $mappedTableName;
            } else {
                if($entityConfig->ignore_prefix) {
                    $tablePrefix = '';
                } else {
                    $tablePrefix = (string)Mage::getConfig()->getTablePrefix();
                }
                
                $tableName = $tablePrefix . $tableName;
            }
    
            if (!is_null($tableSuffix)) {
                $tableName .= '_' . $tableSuffix;
            }
            return $this->getConnection(self::DEFAULT_READ_RESOURCE)->getTableName($tableName);
        }    
    
    }
    


    <models>
                <core>
                    <rewrite>
                        <resource>Meta_Mass_Model_Resource</resource>
                    </rewrite>
                </core>
    </models>
    
    Ответ написан
    1 комментарий