【CakePHP2.x】アソシエーションの考え方自分用まとめ。

超絶今更シリーズ。

まずは公式より。

+ hasOne (A hasOne B) Aは1つのBを持っている
+ hasMany (A hasMany B) Aは複数のBを持っている
+ belongsTo (B belongsTo A) BはAに従属している
+ hasAndBelongsToMany(HABTM) (A HABTM B) AとBは複数のそれぞれを持っている

最初の3つはいいとして、問題は最後である。
HABTMは多対多の構造上、AとBを結びつけるABテーブルが必要であり、これがbelongsToの部分となる。
よって下記式が成り立つ。

A HABTM B =
(A hasMany AB) and (B hasMany AB) / (AB belongsTo A) and (AB belongsTo B)

ABテーブル内に、AとBの外部キーを保持している形となる。