1. hasOne
ユーザーには一つのプロファイルしかない、などの関係
関係 | スキーマ |
---|---|
住所がユーザーに紐付けられている | addresses.user_id |
ユーザーと住所の関係の場合、以下のように初期化できる。
class UsersTable extends Table { public function initialize(array $config) { $this->hasOne('Addresses'); } }
2. belongsTo
複数の弟子が師匠につくなどがbelongsToの例。それは以下のように表すことができるそう。
関係 | スキーマ |
---|---|
弟子が師匠につく | student.mentor_id |
複数の登録しているサービスがユーザーに紐付けられている | serivce.user_id |
弟子と師匠の関係は以下のように初期化できる。
class StudentTable extends Table { public function initialize(array $config) { $this->belongsTo('mentor'); } }
3. hasMany
記事に複数のコメントがついている、みたいな関係を表す。
関係 | スキーマ |
---|---|
記事にたくさんのコメントがついている | Comments.article_id |
商品にはたくさんのオプションが有る | Options.product_id |
医者にはたくさんの患者がいる | Patients.doctor_id |
コメントと記事の関係については以下のように初期化できる。
class ArticlesTable extends Table { public function initialize(array $config) { $this->hasMany('Comments'); } }
4. belongsToMany
関係 | スキーマ |
---|---|
複数の記事に対して複数のタグがついている | articles_tags.id, articles_tags.tag_id, articles_tags.article_id |
複数の患者に対して複数の医者がついている | doctors_patients.id, doctors_patients.doctor_id, doctors_patients.patient_id |
タグなどについては以下のように初期化することができる。
class ArticlesTable extends Table { public function initialize(array $config) { $this->belongsToMany('Tags'); } }