コアテーブルとモジュールテーブルの関係に関する良い習慣


7

これはMagentoの開発に関する質問です。M1とM2の両方に適用できます。

ここ数週間、ネイティブMagentoエンティティ/データベーステーブルに直接関連するいくつかのモジュールに取り組んできました

次に例を示しますが、これはいくつかのモジュール開発の場合に有効です。

(電子メールで説明されている)1人の顧客のみのショッピングカートルールを制限できるモジュール。

私はそれを行うには2つの可能な方法があるという結論に達しました、そして私はどちらが推奨されるものであるか疑問に思っています:

最初の方法:Magentoコアテーブルを使用する

コアを編集しないでください。コアテーブルに適用できますか?

  • テーブルにemail列を追加するsalesrule_rule
  • 制限の適用は、モデルが読み込まれたときに行うことができます。

2番目の方法:カスタムテーブルを使用する

  • カスタムモデルを使用しsalesrule_idemailリンクされたカスタムテーブルを作成する
  • 制限の適用は、(カスタムモデルの)追加の結合またはロードを実行することで実行できます。

戻る日に私はいつも直接コアテーブルを変更するために使用するが、今、これは正しい方法であるような気がしません。ただし、2番目の方法についてはパフォーマンス心配です。

これに対処するための最良の/推奨される方法は何ですか?

回答:


5

これは純粋に意見に基づいているため、他の意見は異なる可能性がありますが、列やインデックスなどを追加するだけであれば、コアテーブルを変更しても問題はありません。

既存の列の変更、削除などは予期しない動作をするため、回避する必要があります。

モジュールインストーラースクリプトを介して列を追加する場合は、問題ありません。その隣に、それ自体で結合または照会する必要があるさらに別のテーブルを追加すると、それに伴うパフォーマンスのペナルティが生じるため、私の意見では悪い判断です。

しかし、私が言ったように、それは私の意見です;)


あなたの貢献に感謝しますが、Magentoのアップグレードに関する問題ではないでしょうか?
デジタルピアニズムのラファエル、

1
同じ列を紹介する場合のみ。私は個人的にコアテーブルのすべての列にモジュール名をプレフィックスとして付けています
Sander Mangel

2
また、追加された列に適切な名前のプレフィックスが付いていることを確認してください。これにより、他のモジュールがそれらと競合しないようになります。
Flyingmana 2016年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.