2010-03-10 6 views
2

J'ai besoin de faire des données de lecture/écriture Magento à une table de base de données existante afin de s'intégrer avec un autre système de partie. La table ne peut pas être renommée. Si je le spécifie dans la balise de la table dans la configuration du modèle comme ci-dessous, magento ajoute le préfixe. Existe-t-il un moyen de remplacer le préfixe en quelque sorte?Comment remplacer le nom et le préfixe de la table dans le modèle Magento?

<models> 
     <arithmetic> 
      <class>Mcmr_Arithmetic_Model</class> 
      <resourceModel>arithmetic_mysql4</resourceModel> 
     </arithmetic> 
     <arithmetic_mysql4> 
      <class>Mcmr_Arithmetic_Model_Mysql4</class> 
      <entities> 
       <arithmetic> 
        <table>newslettersignups</table> 
       </arithmetic> 
      </entities> 
     </arithmetic_mysql4> 
    </models> 

Répondre

0

Il n'y a pas un moyen facile de le faire.

La meilleure solution serait d'étendre le fichier de configuration:

<models> 
    <arithmetic> 
     <class>Mcmr_Arithmetic_Model</class> 
     <resourceModel>arithmetic_mysql4</resourceModel> 
    </arithmetic> 
    <arithmetic_mysql4> 
     <class>Mcmr_Arithmetic_Model_Mysql4</class> 
     <entities> 
      <arithmetic> 
       <ignore_prefix>1</ignore_prefix> 
       <table>newslettersignups</table> 
      </arithmetic> 
     </entities> 
    </arithmetic_mysql4> 
</models> 

Ensuite, vous pouvez remplacer la méthode getTableName de classe Mage_Core_Model_Resource pour le faire prendre en compte pour l'entité l'attribut de configuration « de ignore_prefix » supplémentaires.

if ($mappedTableName) { 
    $tableName = $mappedTableName; 
} else { 
    if($entityConfig->ignore_prefix) 
     $tablePrefix = ''; 
    else 
     $tablePrefix = (string)Mage::getConfig()->getTablePrefix(); 
    $tableName = $tablePrefix . $tableName; 
} 
Questions connexes