私はMagento 2のコードベースを調査していて、セットアップバージョン間でアップグレードセットアップクラスを実行する順序を制御する方法を理解しようとしています。まだ、行き詰まっています。掘り下げた限り、モジュール内のスキーマ/データのアップグレードの順序を制御する方法を見つけることができませんでした。
少しコンテキストを与えるために、モジュールをリリースするとします。残業はアップデートをリリースします。次のファイル構造があるとします。
Setup/InstallPostSchema.php
Setup/CreateAuthorsTableSchema.php
Setup/AddAuthorIdColumnToPostSchema.php
この場合、私はSetup/CreateAuthorsTableSchema.php
前に実行したいと思いSetup/AddAuthorIdColumnToPostSchema.php
ます。
私の質問は、それをどのように/どのように扱うべきですか?
Magento 1.xでは、ファイルの命名規則によってこれが処理さupgrade-1.0.0-1.1.0.php
れます。
LaravelやRailsなどのフレームワーク(および他のユーザーも確信している)では、タイムスタンプアプローチを使用しています。ただし、移行テーブルもあり、これまでに実行された各移行を確認できます。また、簡単にロールバックできます。
更新
Magento/Customer
モジュール内で自分でバージョン管理を行う例を見つけました:
public function upgrade(SchemaSetupInterface $setup, ModuleContextInterface $context)
{
$setup->startSetup();
if (version_compare($context->getVersion(), '2.0.0.1') < 0) {
// Changes here.
}
if (version_compare($context->getVersion(), '2.0.1', '<')) {
// Changes here
}
$setup->endSetup();
}