CakePHP:Modelに$primarykeyは必須?

CakePHP 1.1の話。

AテーブルとBテーブルの外部キーのみからできるCテーブルを作成して(多対多の関係で)、そこにプライマリキーは必要なかったのでModelファイルで$primarykeyを設定していませんでした(DB的には両方ともAテーブル、Bテーブルの外部キーの両方をプライマリキーに設定してた)。

それで、データをインサートするところで、ちゃんとインサートがされたか自動的にチェックされるらしく、そのときに実行されるSQLが

SELECT COUNT(id) AS count FROM Cテーブル WHERE id = Bテーブルにインサートされたid

となってしまい、これはどうしたことだ!と。Cテーブルにはidカラムはないので、当然エラーになるわけです。

// CテーブルのModelクラス
$primarykey = null;

とかやってみたけど、やはり違うようだし、まあフレームワークだから決まりは守れということかと観念して、Cテーブルにもidを設定しました(まったく使わないのだけれど)。まあ色々と勉強になりますね〜。便利だけど癖が強いのがフレームワークだから、あんまりイライラせずにじっくり取り組みます。


タグ CakePHP, PHP | パーマリンク.

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です