データベースの構造変更

テーブルへのカラム追加や削除等、データベースの構造を変更した場合には、設置済の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をリクエストしてください。

 

データの読み込み

CSVファイル

baserCMSは、スキーマファイルの読み込み同様、アップデートスクリプトで CSVファイルによりデータの読み込みを行う事ができます。

  • アップデートフォルダに、テーブル名をCSVのファイル名として配置します。
  • CSVファイルはShift-JISで作成します。
  • 1行目には必ずアルファベットのフィールド名が必要です。
  • PRIMARYKEY のフィールドを自動採番するには、1列目のフィールド名は設定した上で値を空文字にします。

CSVファイルの読み込みは UpdatersController::loadCsv() を実行する事で読み込みます。
アップデートスクリプトは、UpdatersController のメソッド内で実行されているので、実際には、次のように記述します。

$this->loadCsv('3.0.1', 'Mail', 'mail_fields');

バックアップよりCSVファイルを取得する

CSVファイルを一から作成するのは割と手間のかかる作業です。既存テーブルにデータを読み込む場合であれば、baserCMSのデータメンテナンス機能よりバックアップファイルを取得し、その中のCSVファイルを利用すると手間が省けます。

バックアップファイルは、管理システムにログインし、「システム設定」→「データメンテナンス」より取得する事ができます。