【EC-CUBE3】独自プラグインでテーブル作成&データ投入をする方法。

プラグインを自作する際、どうしても避けて通れないのが新しいテーブルの作成かと思います。
ただ、テーブルを作成するだけあれば、Symfony2のMigrationを利用して、
upメソッドにcreate tableの記述をすれば良いのですが、
そのまま同じファイルでデータを投入しようとするとエラーが発生します。
例えば、名称とステータスを持つテーブルを新規作成する場合、
以下のような記述を行うと思います。

これで新しくplg_shiro8_hogehoge_configテーブルが作られるのですが、
$table->setPrimaryKey(array(‘id’));
の後ろに、データを追加する為のinsert文を追記するとエラーが起きます。

これはこのファイル内でデータを追加しようとした時には、
まだplg_shiro8_hogehoge_configテーブルが存在していない事が原因のようです。
詳細はよく分からなかったのですが、SQLが実行される順番にルールがありそうです。
そこでSQLの実行に区切りをつける為、insert文の記述のみ別バージョンのファイルに分けて、
順番に実行させることで対応可能です。
例えば、create tabelの実行を記述するファイルは、「Version20161207000000.php」と命名し、
insertの実行を記述するファイルは、「Version20161208000000.php」とします。

こうする事によって、プラグインインストール時に
Version20161207000000 → Version20161208000000 と順番に実行され、
無事、テーブルに初期データを投入する事が出来ます。
ちなみにインストール時に一気に処理を走らせるために、それぞれのファイル名のyyyymmddの部分は
過去の日付にする必要がありそうです。

以上、ECCUBE3のプラグイン開発時に悩んで、解決した事の1つ、
独自プラグインでテーブル作成&データ投入をする方法になります。