CakePHP サーバサイド

CakePHPのモデル:hasManyとbelongsToについて

hasManyとbelongsToについてまとめてみた。

この概念の理解を深めていくと、モデルからデータを取ってくる時の効率がだいぶ良くなると思う。

 

hasManyとは


文字通り、"have":「持っている」、"many":「いっぱい」から、「いっぱい持っている」の意味。

つまりどういうことかというと、あるテーブルの一つのデータが別のテーブルの複数のデータを持っているということになる。

身近な例で例えるとするならば、”先生はたくさんの生徒を持っている”みたいなもんだ。

これを英語に直すと、"A teacher has many students."になる。

 

belongsToとは


"belong":「所属する」、"to":「〜に対して」から、「〜に対して所属する」の意味になる。

これは、あるテーブルの一つのデータは別のテーブルの一つデータに所属しているということを意味する。

先ほどの続きで例えると、”ある生徒は先生に所属している”、

つまり、"A studenst belongs to a teacher."になる。

 

つまり、hasManyとBelongsToの関係は・・・


要は対になっているということだ。

テーブルAのデータがテーブルBの複数のデータに紐付いているということは、

テーブルBのそれぞれのデータがテーブルAのいずれか一つのデータに関連付けられている

ということになる。

 

実装


テーブル定義

テーブルとして"teachers"と"students"を用意する、それぞれのカラム名は以下の通り。

teachers

カラム名
id int(unsigned) 1
name varchar(255) Mr.saito

students

カラム名
id int(unsigned) 1
name varchar(255) suzuki
teacher_id int(unsigned) 1

 

また、外部キーの設定は以下の通り。
"students.teacher_id" = "teachers.id"

コード

以下、CakePHP(version 2.x)のモデル定義の実装例

teachersテーブル

studentsテーブル

 

-CakePHP, サーバサイド
-,

© 2023 Shiro's secret base