2016-09-25 6 views
1

Ich bin neu bei Magento. Ich möchte eine Spalte in der Tabelle newsletter_subscriber hinzuzufügen, so dass ich eine neue Datei mysql4-upgrade-1.6.0.0-1.6.0.1.php in app/code/core/mage/newsletter_setup/Magento Hinzufügen einer Spalte in vorhandene Tabelle

<?php 
$installer = $this; 
$installer->startSetup(); 
$installer->getConnection()->addColumn(
    $this->getTable('newsletter/subscriber'), //table name 
    'groupid',        //column name 
    'varchar(100) NOT NULL'     //datatype definition 
); 

$installer->endSetup(); 

?> 

ich die Konfigurationsdatei aktualisiert:

<modules> 
    <Mage_Newsletter> 
     <version>1.6.0.0</version> 
    </Mage_Newsletter> 
</modules> 

Es funktioniert nicht, bitte fahren, was ich bin falsch machen

Antwort

5

Es wird nicht empfohlen, Kerndateien hinzuzufügen, zu ändern oder zu ändern. Besser machen Sie ein neues Modul, um eine zusätzliche Spalte hinzuzufügen.

Sie müssen korrekte Version für das Modul-Upgrade in app/code/local/your/module/sql/your_module_setup/upgrade-0.1.2-0.1.3.php Datei erwähnen. (Dies bedeutet, dass Sie die Modulversion von 0.1.2 auf 0.1.3 aktualisieren). Wenn Ihr nicht Upgrade-Skript verwenden Erinnern Sie sich <resources> in Modul zu definieren config.xml und das Setup-Skript Name ist mysql4-install-0.1.0.php

Im Folgenden finden Sie Mysql-Setup-Skriptdatei - upgrade-0.1.2-0.1.3.php

<?php 
     ini_set('display_errors', '1'); 

     $installer = $this; 
     $installer->startSetup(); 
     $installer->getConnection() 
       ->addColumn(
        $installer->getTable('newsletter/subscriber'), //Get the newsletter Table 
        'your_field_name', //New Field Name 
      array(
       'type'  => Varien_Db_Ddl_Table::TYPE_TEXT, //Field Type like TYPE_INTEGER ... 
       'nullable' => true, 
       'length' => 255, 
       'default' => 'Some thing default value', 
       'comment' => 'Your field comment' 
      ) 
     );    
     $installer->endSetup(); 
     ?> 

und nach dieser Änderung app/code/local /your/module/etc/config.xml Version zum Beispiel

<config> 
    <modules> 
     <NameSpace_ModuleName> 
      <version>0.1.3</version> <!-- if upgrade script version is 0.1.3 --> 
     </NameSpace_ModuleName> 
    </modules> 
    <global> 
    <resources> 
     <NameSpace_ModuleName_setup> 
      <setup> 
       <module>NameSpace_ModuleName</module> 
       <class>Mage_Catalog_Model_Resource_Setup</class> 
      </setup> 
      <connection> 
       <use>core_setup</use> 
      </connection> 
     </NameSpace_ModuleName_setup> 
     </resources> 
    </global> 
</config> 
2

Mit Setup-Skripten werden sie entsprechend den Änderungen in der Modulversion ausgeführt.

In Ihrem Fall der Dateiname ist mysql4-upgrade-1.6.0.0-1.6.0.1.php, während die Version 1.6.0.0 ist. Um dieses bestimmte Skript auszuführen, müssen Sie die Version auf 1.6.0.1 stoßen.

Das gesagt - Sie hinzufügen Funktionalität zu Kern-Magento-Module, die schlechte Praxis ist. Sie sollten dies stattdessen in ein lokales Poolmodul (app/code/local) verschieben.

Verwandte Themen