アップデートスクリプト

baserCMSは、アップデート時にアップデートスクリプトを準備しておくと、そのスクリプトを自動実行する仕組みとなっています。
アップデートスクリプトは、データベースの構造変更 や、CSVデータの読み込み、データベース内のデータの更新、app フォルダ内のファイルやフォルダ構造の変更などを行いたい場合に利用します。

アップデートスクリプトの配置場所

アップデートスクリプト(update.php)は、アップデートフォルダ内に配置します。
アップデートフォルダは /lib/Baser/Config/update/ の配下に作成した、次にリリースするバージョン番号のフォルダとなります。

(例) /lib/Baser/Config/update/3.1.0/

アップデートスクリプトの配置場所は次のようになります。

(例) /lib/Baser/Config/update/3.1.0/update.php

 

アップデートメッセージ

アップデート画面に注意事項等のメッセージを表示したい場合は、次のファイルを作成し、変数 $updateMessage を定義し、メッセージを代入します。

//(例)/lib/Baser/Config/update/3.1.0/config.php
$updateMessage = 'アップデートを行う前に files フォルダのバックアップを作成しておいてください。';

 

アップデートログの出力

アップデート時の各処理について、成功可否等のメッセージ表示したい場合は、UpdatersController::setUpdateLog() を利用します。下記のログファイルにも記録されます。

/app/tmp/logs/update.log
// メッセージの設定例
$this->setUpdateLog('users のテーブル構造に成功しました。');

 

開発時のアップデートスクリプトのテスト

アップデートを実行すると、データベースに記録されているバージョン番号を更新し、再度、実行するには、データベース上のバージョン番号を手動で元に戻す必要があります。
※ データベース上のバージョン番号は、site_configs テーブルの name フィールド に、version という値が格納されているレコードに保存されています。

その際、通常、バージョン番号となっているアップデートフォルダの名称を「test」とすると、データベース上のバージョン番号が更新されず、何度もアップデートスクリプトのテストを行う事ができます。
※ アップデートスクリプトによって変更された内容のリセットは手動で行う必要があります。
 

アップデートスクリプトでの注意事項

アップデートスクリプト内で、データベース情報を変更後、モデルを利用してデータの更新を行う場合は、ClassRegistry を利用せず、モデルクラスを直接イニシャライズしてください。
モデル内にキャッシュされたテーブル構造情報が古いままなので、エラーが発生する可能性が高いです。