AddressテーブルをPluginで追加してみる
Plugin の雛形を作る。
以下のタスク(コマンド)を実行することで雛形のフォルダを構成してくれる
作成したいPluginの名前は「opSamplePlugin」
# symfony opGenerate:plugin opSamplePlugin
すると、/plugin の下に opSamplePlugin フォルダが、その中に、
/app, /lib, /test フォルダが作成される。
Schemaを設定する
Pluginで独自のDBを設定し使用する場合、schema.ymlを設定する必要がある。
/plugin/opSamplePlugin/config/doctrine/schema.yml
を用意し、テーブルを設定する。
(例)
Address: columns: id: { type: integer(4), primary: true, autoincrement: true, comment: "Serial number" } first_name: { type: string(64), notnull: true } family_name: { type: string(64), notnull: true } mail: { type: string(512), notnull: true } is_activate: { type: boolean, notnull: true, default: 1 } is_public: { type: boolean, notnull: true, default: 1} member_id: { type: integer(4), notnull: false } indexes: mail_UNIQUE: fields: [mail(10)] type: unique
文法についてはYAMLなので直観的でわかり易い。
/config/doctrine/schema.yml にOpenPNE本体の設定があるので、参考にすると良い。
*Indexを設定する時に、カラムのStringサイズが大きいとTEXT型になるので、key_lengthを設定する必要がある。
*fields: [mail(10)] <= key_lengthを10に指定。通常なら [mail] だけでよい。
openpne:migrate タスクを実行
openpneのタスクを実行し、schema.ymlのモデルファイルを作成する。
# symfon openpne:migrate --target=opSamplePlugin
--targetを指定しないと次で操作するsns_configにデータが追加されないようだ
/lib/model/doctrine/opSamplePlugin
/plugin/openSamplePlugin/lib/filter
/plugin/openSamplePlugin/lib/form
/plugin/openSamplePlugin/lib/model
に、それぞれのモデルファイルが作成される。
PluginのConfigを変更
先のタスクを実行すると、sns_configテーブルにname="opSamplePlugin_needs_data_load" が存在するレコードが追加される。
追加されたこのレコードを編集することで、目的のプラグイン分のテーブルだけをDBに作成することができる。
レコードの valueの値を1に設定する。
DBの追加
もう一度migrateタスクを実行し、Pluginで設定されたschema.ymlをDBに反映する。
# symfon openpne:migrate --target=opSamplePlugin
DBへのテーブル追加ができていたら成功!