-
Notifications
You must be signed in to change notification settings - Fork 131
データベースの構造変更
テーブルへのカラム追加や削除等、データベースの構造を変更した場合には、設置済のbaserCMSのアップデートに対応する為、構造変更を指し示す、「スキーマファイル」の準備が必要です。
なお、開発方針として、次のリリースがマイナーアップデート以上の場合にデータベースの構造変更を行う事ができます。
スキーマファイルとは、データベースのテーブル構造を表現するクラスファイルで、CakeSchema クラスを継承して実装します。カラム情報とインデックス情報を定義します。
class DummySchema extends CakeSchema {
ブラウザより、インストールが完了した baserCMS
の次のURLにアクセスすると、現在接続しているデータベースの情報を元にスキーマファイルの書き出しが行えます。
baserCMSのコアパッケージ開発では、MySQLをベースに開発をすすめていますので、スキーマファイルを書き出す際には、事前に MySQL
を利用した状態で baserCMSをインストールしておきます。
スキーマファイルは、CakePHPのコンソールでも作成する事ができます。詳細な情報は、スキーマの管理と移植
を参照してください。
http://{baserCMSの設置URL}/admin/tools/write_schema
※ この機能は管理システム内にリンクが存在しませんので直接URLをリクエストしてください。
スキーマファイルの生成ツールでは、テーブル名をファイル名として、スキーマファイルが生成されますが、テーブル構造の変更タイプ(create /
alter / drop)によって、プレフィックス付の名称にリネームした上でアップデートフォルダに設置します。
アップデートフォルダは /lib/Baser/Config/update/
の配下に作成した、次にリリースするバージョン番号のフォルダとなります。
- テーブル追加: create_tablename.php
- テーブル更新: alter_tablename.php
- テーブル削除: drop_tablename.php
※ ファイル名に変更タイプを含めない場合は、create として処理されます。
(例)/lib/Baser/Config/update/3.1.0/alter_permissions.php
テーブルの追加、更新、削除を行う場合、インストール時に利用するスキーマファイルのメンテナンスが必要です。
- テーブル追加
- インストール用のスキーマファイル設置フォルダにも追加
- コアの初期データ用のCSVを作成
- テーブル更新
- インストール用のスキーマファイル設置フォルダ内のスキーマファイルに内容を反映
- コアの初期データにカラムの状態を反映
- デフォルトテーマの初期データにカラムの状態を反映
- テーブル削除
- インストール用のスキーマファイル設置フォルダより対象のスキーマファイルを削除
- コアの初期データよりCSVファイルを削除
- デフォルトテーマの初期データよりCSVファイルを削除
■ インストール用スキーマファイル
/lib/Baser/Config/Schema/
/lib/Plugin/PluginName/Config/Schema/
■ コアの初期データ
/lib/Baser/Config/data/
/lib/Plugin/PluginName/Config/data/
■ デフォルトテーマ初期データ
/lib/Baser/Config/theme/theme_name/Config/data/
baserCMSは、アップデート時に アップデートスクリプト を準備しておくと、そのスクリプトを自動実行する仕組みとなっていますので、そのファイルにスキーマファイルの読み込み処理を記述しておきます。
スキーマファイルの読み込みは
UpdatersController::loadSchema()
を実行する事で読み込みます。
アップデートスクリプトは、UpdatersController のメソッド内で実行されているので、実際には、次のように記述します。
$this->loadScheme('3.0.1', 'Mail', 'mail_fields', 'alter');
作成したスキーマファイルが正常に読み込めるかをテストする場合には、
ブラウザより次のURLにアクセスし、スキーマファイルをアップロードしてテストを行う事ができます。
http://{baserCMSの設置フォルダ}/admin/tools/load_schema
※ この機能は管理システム内にリンクが存在しませんので直接URLをリクエストしてください。
baserCMSは、スキーマファイルの読み込み同様、アップデートスクリプトで CSVファイルによりデータの読み込みを行う事ができます。
- アップデートフォルダに、テーブル名をCSVのファイル名として配置します。
- CSVファイルはShift-JISで作成します。
- 1行目には必ずアルファベットのフィールド名が必要です。
- PRIMARYKEY のフィールドを自動採番するには、1列目のフィールド名は設定した上で値を空文字にします。
CSVファイルの読み込みは
UpdatersController::loadCsv()
を実行する事で読み込みます。
アップデートスクリプトは、UpdatersController のメソッド内で実行されているので、実際には、次のように記述します。
$this->loadCsv('3.0.1', 'Mail', 'mail_fields');
CSVファイルを一から作成するのは割と手間のかかる作業です。既存テーブルにデータを読み込む場合であれば、baserCMSのデータメンテナンス機能よりバックアップファイルを取得し、その中のCSVファイルを利用すると手間が省けます。
バックアップファイルは、管理システムにログインし、「システム設定」→「データメンテナンス」より取得する事ができます。