2012-03-14 7 views
2

magentoのアップグレードスクリプトをsqlフォルダに置き換えるにはどうすればよいですか?MagentoはSQLアップグレードスクリプトをオーバーライドしていますか?

私はテーブルとすべてで新しいモジュールを設定する方法を知っています。インストールスクリプトは一度だけ実行されることは分かっています。しかし、私はどのように既存の値でテーブル内の何かを上書きまたは変更する方法を知りたいです。

データベースの顧客属性を変更できるように、sqlクエリを実行するとします。例えば、 'First Name'の 'eav_attribute'テーブルの 'frontend_label'を 'Company Name'に変更したいとします。

提案がありますか?

答えて

1

あなたのソリューションは、あなたの拡張機能のバージョン番号をバンプし、あなただけの開発している場合は、アップグレードスクリプトを台無しにする必要はありませんあなたのタスク

+0

しかし、どうすればアップグレードスクリプトを実行できますか?私はコントローラーに負荷がかかっていないことを意味します。申し訳ありませんが、私はそれに新しいと私はちょっと混乱しています。いくつかの擬似コード – RIK

+1

を用意してください。コントローラーをオーバーライドする必要はありません。 更新スクリプトを作成するだけです。 モジュールのバージョンを増やします。 それは自動的に実行されます – Sergey

+0

はい私はそれを行うコアの顧客モジュール(モジュールのバージョンを増やし、SQLスクリプトをアップグレードする)がそれを行うが、それを行う正しい方法です。私は彼らがコアファイルに触れないと言うことを意味します。ローカルを使用 – RIK

0

のための新しいアップグレードスクリプトを作ることです。それらは面倒です。

を実行し、このMySQLのコード:

DELETE FROM core_resource WHERE code = 'mymodulename_setup'; 

物事を容易にするために、あなたは必要に応じて次の機能を追加、あまりにもこれを行うには、独自のメソッドまたはアクションを作成することができます。

public function removeMyModuleAction() { 
    $sql = "DELETE FROM 'core_resource' 
        WHERE 'code' = 'mymodule_setup';"; 

    $connection = Mage::getSingleton('core/resource')->getConnection('core_write'); 

    try { 
     $connection->query($sql); 
    } catch (Exception $e) { 
     echo $e->getMessage(); 
    } 
} 

core_resource tableからこの行を削除すると、Magentoは最初のインストールスクリプトを再度実行します。アップグレードをする必要はありません。もちろん、モジュールを公開している場合は、アップグレードスクリプトが必要になります。

関連する問題