CakePHP1.2 RC2 で Schema を試してみました。
基本的な操作は cake コマンドで行います。

PHP でテーブル構造を配列で定義しておいてテーブルを作成することもできますし、現在あるテーブルからテーブル構造を PHP に出力することもできます。

ヘルプの表示

$ cake schema help

スキーマの作成

$ cake schema generate

schema.php というファイルが app/config/sql に作成される
schema.php が存在する場合は上書きするかどうか聞かれる

Welcome to CakePHP v1.2.0.7296 RC2 Console
---------------------------------------------------------------
App : app
Path: /home/cakephp12/app
---------------------------------------------------------------
Cake Schema Shell
---------------------------------------------------------------
Generating Schema...
Schema file exists.
 [O]verwrite
 [S]napshot
 [Q]uit
Would you like to do? (o/s/q)
[s] > s

[s]を答えると schema_X.php (X は2からの順番に割り振られる)というファイル名になる

schema.php は下記のような内容で作成される

<?php
/* SVN FILE: $Id$ */
/* App schema generated on: 2008-07-11 14:07:53 : 1215754913*/
class AppSchema extends CakeSchema {
	var $name = 'App';

	var $file = 'schema.php';

	function before($event = array()) {
		return true;
	}

	function after($event = array()) {
	}

}
?>

データベース内のテーブル全てのスキーマを作成する

$ cake schema generate -f

-f をつけるとデータベース内のテーブル全てのスキーマが作成される

スキーマよりテーブルを作成する

$ cake schema run create

app/config/sql/schema.php の内容でデータベース内にテーブルを作成する

$ cake schema run create <schema> <table>

スキーマとテーブルを指定して実行することもできる

スキーマからテーブルを更新する

$ cake schema run update

app/config/sql/schema.php の内容でデータベース内のテーブルを修正する

$ cake schema run update <schema> <table>

create と同様にスキーマとテーブルを指定して実行することもできる

※update に関していくつかテストしてみましたが、まだうまく動作しない場合があるようです。

SQL 作成

$ cake schema dump

スキーマの内容で SQL を作成してくれる。
ファイル名を指定しないと SQL を表示し、

cake schema dump hoge

とファイル名(上記の場合は hoge というファイル名)を指定すると app/config/sql/hoge.sql というようにファイルを作成して SQL を保存してくれます。

スキーマの内容を表示

$ cake schema view

app/config/sql/schema.php の内容を表示。

オプションの指定方法などは help を見ると詳しく載っています。

実際の cake コマンドで schema を指定したときの処理は cake/console/libs/schema.php で行っています。
このスキーマですが Subversion などを使用して複数人で開発しているときに使うと便利かもしれません。

関連する投稿