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");
}
}