かなりボケボケだった。
こういうことらしい。
DBIx::Class::Relationship - Inter-table relationships - search.cpan.org
PACKAGE>$method_name('relname', 'Foreign::Class', $cond, $attrs);
というわけで、こんな感じの理解で。
__PACKAGE__->belongs_to(アクセサ名(任意) => '従うクラス','従うクラスのIDを持つ属性名'); __PACKAGE__->has_many(アクセサ名(任意) => 'クラス','自分のクラスのIDをもつ属性名'); __PACKAGE__->many_to_many(アクセサ名(任意) => 'has_manyでのアクセサ名','belongs_toでのアクセサ名');
データベースを指しているのかクラスを属性を指してるのか良く分かってなかった。というかO/RマッパーでDBのカラム名っておかしいよって何で気づかなかったんだろう。
- many_to_manyは任意にキー名決められるのにhas_manyはキー値にテーブル名指定しないとエラー吐くのが謎。
- has_many(アクセサ名(任意) => 'クラス','カラム名')でOK
- many_to_manyでテーブル名のとこをKzfm::Schema::TagMapってやるのが駄目な理由がよくわからない。
- has_manyで指定したアクセサ名が必要なのでダメ。
なんとなくこんな感じか。