忍び歩く男 - SLYWALKER

大阪のこっそりPHPer

CakePHP1.2.8248 cake bake schemaの失敗談

このエントリーは、結論から言うと
bakeのエラーじゃなくて俺が間違ってたよ!
ということです。

#CakePHP ん〜cake schema はまだ使い物にならんなぁ。PRIMARY KEY CHAR(36)がINTにかわっちゃうし。posts_tagsのようなTableの作成に失敗するし

Twitter / slywalker: #CakePHP ん〜cake schema はまだ ...
上記の発言は私の多大なる誤解に基づいたものでした…


HABTMのJOIN Tableを

CREATE TABLE IF NOT EXISTS `posts_tags` (
  `profile_id` int(11) NOT NULL,
  `tag_id` int(11) NOT NULL,
  PRIMARY KEY  (`profile_id`,`tag_id`)
);

今まで、こんな感じで作ってました。
ちゃんと動いてくれてたのは、CakePHPのお慈悲だったようで…

CakePHP モデルの相互に作用する全てのテーブル(join テーブルは除く)は、それぞれの列を一意に識別する単一フィールドのプライマリーキーが必要です。もし、posts_tags のような join テーブルの列で、単数形のプライマリーキーではないテーブルのモデルをお望みなら、テーブルに単一フィールドのプライマリーキーを追加することが CakePHP の規約です。

モデルとデータベースの規約 CakePHPの規約 CakePHPの基本原則 マニュアル 1.2 Collection The Cookbook

というわけでちゃんと書いてあります。
どうりで、cake schema run create が失敗するわけです^^;


アレ?PRIMARY KEY CHAR(36)がINTにかわっちゃうのは何だったんだろう???