回答:
setup:upgrade
コマンドを実行するタイミング
1つ以上のモジュールを有効にした場合、Magento setup:upgrade
を実行してデータベーススキーマを更新する必要があります。
または
アップグレードスキーマを作成する場合は、Magento setup:upgrade
コマンドを実行する必要があります
いつsetup:di:compile
コマンドを実行する必要がありますか?
答えは簡単ですこのコマンドは次の目的を果たします
アプリケーションコードの生成(ファクトリ、プロキシなど)
エリア構成集約(つまり、エリアごとに最適化された依存性注入構成)
インターセプター生成(つまり、インターセプターの最適化されたコード生成)
インターセプトキャッシュの生成
リポジトリのコード生成(つまり、API用に生成されたコード)
サービスデータ属性の生成(つまり、データオブジェクトの生成された拡張クラス)
http://devdocs.magento.com/guides/v2.0/config-guide/cli/config-cli-subcommands-compiler.html
magentoが開発者モードの場合、コンパイルコマンドを実行する必要はありません。削除
var/di
してgeneration
フォルダー(magento 2.0.xおよび2.1.xの場合)または生成されたフォルダー(Magento 2.2.x以降)を削除するだけです。
var/di
ディレクトリは開発者モードにありますか?
bin / magento setup:upgrade ::インストーラースクリプトに関連するモジュールに変更がある場合にのみ使用されます。アップグレード後、bin / magento setup:di:compileを実行する必要があります。
bin / magento setup:di:compile :: di.xmlファイルまたはコントローラーメソッドに関連する変更を行う場合。この場合、アップグレードを実行する必要はありません。
magento setup:upgradeは、セットアップスクリプトを実行するという意味では、magento 1のn98-magerun sys:setup:runとほぼ同じですが、2.1以来、magento 2の機能に加えて何かを誤解していません。新しく作成したモジュールをアクティブにします。これは、プロダクションモードとデフォルトモードだけでなく、開発者モードでも実行する必要があります。一方、setup:di:compileは「自動生成された」クラスを生成します。これは、開発者モードで自動的に行われるため、本番モードで実行するだけで済みます。
インデックス作成についても、フラットテーブルを有効にしていて、インデックスの影響を受けるエンティティ(製品属性、カテゴリ属性、カテゴリ製品など)のいずれかに変更を加えていない限り、これを行う必要はありません。キャッシュをクリアする必要はありません理論的にはキャッシュが無効になっている場合に実行する必要がありますが、サニティチェックを行うために常に実行しています。セットアップのアップグレードによってキャッシュもクリアされることに注意してください。
これがあなたの質問に答えてくれることを願っています。