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で多:多リレーションシップ作成したテーブル名をそのまま使用