Schemaタスク(テーブルスキーマ出力)| Tasks

sabel.db ではテーブルのメタデータ(スキーマ)を利用し、型変換などを行っています。スキーマはデータベースから取得しますが、これには非常に重い処理であり、環境やデータベースによっては数十~数百msecかかります。Schemaタスクでスキーマをファイルに書き出すことで、この重い処理から解放されます。

タスクの最初の引数には実行環境を指定します。実行環境によって接続するデータベースが異なる可能性があるからです。スキーマを書き出すテーブル名を、オプションの "-t" 以降に指定します。
$ sakle Schema development -t user diary
[SUCCESS] output Schema 'Schema_User'
[SUCCESS] output Schema 'Schema_Diary'
コマンドが成功すると lib/schema 以下にクラスファイルが書き出されます。
lib/schema/User.php

<?php

class Schema_User
{
  public static function get()
  {
    // カラム情報
    ...
  }
  
  public static function getProperty()
  {
    // ユニーク制約・外部キー制約などの情報
    ...
  }
}
テーブル定義を変更した後は必ずSchemaタスクを実行し、スキーマファイルを更新してください。

また "-l" オプションを付けるとテーブルの一覧をファイルに書き出します。Sabel_DB_Metadata::getTableList() はデータベースからテーブル一覧を取得する前に、これで書き出されるテーブル一覧ファイルが存在するかどうかを調べ、存在する場合はそれを優先します。
※コネクションネームが default の場合は省略することができます。
$ sakle Schema development -l default
[SUCCESS] output table list of 'default' connection.
lib/schema/DefaultTableList.php

<?php

class Schema_DefaultTableList
{
  public static function get()
  {
    return array("user", "diary");
  }
}