baserCMS プラグインのアップデートスクリプト
(参考)
http://project.e-catchup.jp/projects/basercms/wiki/データベースの構造変更
http://project.e-catchup.jp/projects/basercms/wiki/アップデートスクリプト
参考URLはコアのアップデートについてみたいだけど、プラグインのアップデートでも同様にできるようだ。
プラグインのアップデートで、スキーマファイルってどうやって適用するんだ?
で調べてみたら見つけた。コアのプラグインも同じだったので、コアのプラグインも参考にやってみました。
特に問題なくスキーマファイルが適用されたようである。
以下、いつものように私のメモ代わりです。
例えば、0.0.0 から 0.0.1 へアップデートするとした場合、以下のようにファルダとファイルと用意して、
プラグイン管理からアップデートボタンを押すと、アップデートスクリプトが走る。
app/PluginName/Config/update/0.0.1/updater.php
<?php if($this->loadSchema('0.0.1', 'PluginName', 'table_name', $filterType = 'alter')) { $this->setUpdateLog('table_name テーブルの構造変更に成功しました。'); } else { $this->setUpdateLog('table_name テーブルの構造変更に失敗しました。', true);
途中の足りないフォルダは作る。
0.0.1フォルダはバージョン番号で、これからアップデートするバージョンの番号に合わせる。
ちなみに、0.0.1-beta とか数字以外のバージョンを付けると、プラグイン管理でアップデートのボタンが出てこないようなので注意。
$filterType は alter 以外にもあるんだろうけど調べてない。
app/PluginName/Config/update/0.0.1/alter_table_name.php
システム管理 → ユーティリティ → ユーティリティメニュー → スキーマファイル生成
で出力したファイルの頭に、alter_ を付けて、updater.php と同じ階層に設置。
さっそく追記。
1.0.0-beta から 0.0.1 へバージョンアップ(?)したら、updater.phpが動かなかったみたい。
バージョンダウンは動かない。という仕様なんだろうか。
例によって調べてない。
alter は良いのだけど、insert は無いのだろうか。
新規テーブルの追加がわからなかった。今度調べる。
前の記事: kusanagi,baserCMSのドメイン変更手順
次の記事: kusanagi で letsencryptが更新されない
2018/07/20 | 開発記録
コメント/トラックバック
トラックバック用URL:
この投稿のコメント・トラックバックRSS