chihiro-adachiさんによる「EC-CUBE2.xからEC-CUBE4.xへの移行方法」になります。EC-CUBE4系では、コアのEntityを拡張する時に、TraitとDoctrineのannotationを使った拡張が推奨されています。doc4.ec-cube.netトレイトを使うと、拡張したスキーマのDBへの反映時にコマンドラインでプロキシ作って反映させるんですが、その際にちょっと想定していなかった挙動をしていてハマっtたのでご報告です。独自のフィールドやメソッドを追加したTraitを作って、プラグインインストールしてそれらを反映させるためにプロキシ生成コマンドを叩きます。配下にはプロキシが生成されていないとします。プラグインのEntityをスキャンして対応するトレイトを見つけ、作成したプロキシクラスに追記します。[];こんな感じです。クラス定義の中でuse文を使ってtraitが使われています。)のファイルは、プロキシ初回生成時しか読まれませんでした。言うのも、どうしてもtraitでは対応できない処理をコアのEntityに追加したのですが、何度プロキシを生成し直したりキャッシュ消したりしてもそれが反映されなかったんです。生成されるプロキシにコアのEntityに追加した処理が反映されてなかったのです。それ以外にtraitで追加したものはちゃんと含まれていたので、traitの変化は追跡するけど、コアの変更は追跡しないという仕様の様でした。勉強会に参加されていたEC-CUBE社のCTOのkiyatakaさんに相談してみると、プロキシを一旦消せば再度コアを見て再生成されるはず、との事でしたが、プロキシ消すと「プロキシが見つかりません」という旨のエラーが出てダメでした。通常、コアのEntityを直接いじるというケースはあまりないと思うのですが、EC-CUBE自体のバージョンアップ時にはコアのEntityが変わる可能性があります。その場合、カスタマイズしていたりプラグインをインストールしていたりすると、手動でgithubとかから差分持ってきてコアをバージョンアップした際にコアの変更が反映されない可能性があります。kiyotakaさんに内容は伝えてあるので、いずれ修正されるとは思いますが、Entity拡張してカスタマイズとかしていて変な挙動に遭遇したらこの記事を思い出してください。2016の8日目の記事です。(2)はてなブログをはじめよう!xross-cubeさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。