「CakePHP で複合キーは使えない?」というエントリを書いたところ、sdozonoさんという方からコメントをいただいた。
どうしても id フィールドは作りたくない、という場合には、http://qcodo.com がよさそうです。”Qcodo even allows tables to have multiple-column primary keys. However, only limited functionality will be generated for tables that have multiple primary keys. “とあります。
早速、試してみたので、簡単なチュートリアルも交えて試用報告。
qcodo は PHP5 以上を対象としたフレームワーク。PHP4 でやってから悩まないように(僕は、よくハマる。TRAXのときもハマッた)。日本語情報は少ないし、本家チュートリアルの対象バージョンは若干古め。ちょっといじってみた感じ、web に転がっている情報と最新の配布ファイルとでは、ディレクトリ構成や API 周りにいろいろギャップがあるようだ。最新バージョンを試すならアーカイブ中の README や本家チュートリアルからリンクされている example 集の情報を読むのが吉。
今回試したのは 0.3.11。配布ファイル中の /_README.txt を参考に、wwwroot/ 以下を htdocs/qcodo として配置。cli ツールを使う場合は、_devtools_cli を任意の場所に設置する。
続いて、htdocs/qcodo/includes/configuration.inc.php を環境にあわせて編集する。DOCROOT 周り設定と、DB 設定だけで、すぐ動かせる。DOCROOT は apache の DocumentRoot(つまり htdocs まで)、SUBDIRECTORY は DOCROOT から見た qcodo ルート位置を書く。DB設定はアダプタ名と、DBホスト、接続ユーザ名、パスワードとかとか書いてやればよい。ウチの場合、両箇所の該当部分はこんなかんじ。
終わったら、htdocs/qcodo/_devtools/codegen.php をブラウザからアクセスしてやると、接続先DBのスキーマからデータモデルクラスやらフォームやらビューをぼこぼこ自動生成してくれる。一個一個、対話式でbakeしなくて良いのはCakePHPよりも楽ちんだ。できあがったフォームは htdocs/qcodo/form_drafts やら htdocs/qcodo/panel_drafts をアクセスすれば確認できる。プルダウン選択->テーブルの読み込みや、レコード新規作成/編集のUIは AJAX していて、これだけでもなかなか使いやすい。
qcodoの面白いところは、CakePHPで悩んだ複合キーの課題も含め、テーブル間の関連情報を、全て外部XML設定ファイルに書けるという点にある。codegen.php でコード生成する際、既存スキーマの利用はテーブル名/カラム名くらいにまで留まっており、関連やキーの設定はこの外部XMLを参照するような作りになっているようだ。これがなかなか絶妙。
つまり、将来的にhogehogeするかもしれないから、なんて理由でユルユルな制約のまま運用してしまって、機能拡充するうちにアレな状態になってしまっていた既存DBの面倒を見ることになってしまっても(泣)、既存スキーマに手を入れること無く、スピーディな管理ツール開発手法を導入できる(かも知れないっ)ということだ。
この辺の話は、また今度書く。
最近のコメント