2つのテーブルが必要です。これが最良の方法であり、アプリケーション内で最も柔軟性と使いやすさを提供します。
データベーステーブル
// families
id | name
------------------------------
1 | Smith
2 | Jones
3 | Davis
// members table
id | family_id | name | gender
-----------------------------------
1 | 2 | James | M
2 | 3 | Christine | F
3 | 1 | David | M
4 | 2 | Mark | M
5 | 1 | Simon | M
6 | 1 | Lucy | F
CakePHPモデル
次に、モデルを定義して、モデルが正しい関係になるようにする必要があります。
// app/Model/Family.php
class Family extends AppModel {
public $hasMany = array('Member');
}
// app/Model/Member.php
class Member extends AppModel {
public $belongsTo = array('Family');
}
次に、次のように家族を取得できます。
CakePHPコントローラー
// Find all members that belong to Family 1
$family = $this->Member->find('all', array(
'conditions' => array('family_id' => 1)
));
また
// Find Family 1 and get all its members
$family = $this->Family->find('first', array(
'conditions' => array('family_id' => 1),
'contain' => array('Member')
));
心配しているように、新しいメンバーの追加や関係の変更に問題はないはずですが、特定の問題が発生した場合は、おそらく私たちがお手伝いします。この種のモデル関係は非常に一般的です。