bakeで関連モデルの設定名が途切れる事がある
3文節位の長いテーブル名からbakeでモデルを生成すると、関連の生成時にクラス名が途切れました。
原因など不明ですが、ひとまず現象メモ*1。
テーブル名 characters_has_profiles
charactersとprofilesを多:多リレーションシップで結ぶ為のテーブル。
characters, profilesとともに、bakeで関連付けも設定してモデル生成したところ、
characters, profiles側の関連付け設定でクラス名
CharactersHasProfiles
となるべきところが、
HasProfile
CharactersHa
のようになっていました。
「HasProfile」だけなら、3文節モデル名はダメなのかなと最初思いましたが、Cookbookで「3文節の場合」が例示されてますし*2、
第一「CharactersHa」の説明が付かない。
名称が長いところに問題があるのでしょうか・・・*3
正しく動くようにした修正差分。
[cake@cake chara-shee]$ git diff app/models/character.php app/models/profile.php diff --git a/app/models/character.php b/app/models/character.php index 409f39e..6260fd5 100644 --- a/app/models/character.php +++ b/app/models/character.php @@ -42,8 +42,8 @@ class Character extends AppModel { ); var $hasAndBelongsToMany = array( - 'HasProfile' => array( - 'className' => 'HasProfile', + 'CharactersHasProfiles' => array( + 'className' => 'CharactersHasProfiles', 'joinTable' => 'characters_has_profiles', 'foreignKey' => 'character_id', 'associationForeignKey' => 'has_profile_id', diff --git a/app/models/profile.php b/app/models/profile.php index b6f3338..f2f20dc 100644 --- a/app/models/profile.php +++ b/app/models/profile.php @@ -51,8 +51,8 @@ class Profile extends AppModel { ); var $hasAndBelongsToMany = array( - 'CharactersHa' => array( - 'className' => 'CharactersHa', + 'CharactersHasProfiles' => array( + 'className' => 'CharactersHasProfiles', 'joinTable' => 'characters_has_profiles', 'foreignKey' => 'profile_id', 'associationForeignKey' => 'characters_ha_id',
*2:http://book.cakephp.org/ja/view/24/Model-and-Database-Conventions
*3:DBDesignerで多:多リレーションシップ作成したテーブル名をそのまま使用