アソシエーション「hasOne」

2007/04/25 | cakePHP

少し時間ができたので、cakePHPのリレーション関連のまとめ。
ちなみにデータベースで言うところのリレーション(って言わないのかな?)はcakePHPではアソシエーションという。まず一つ目「hasOne」。
関連付けるモデルはあらかじめそれぞれ作っておく(「主」側のモデルをmodelA、「従」側のモデルをmodelBとする)。ここで「主」側、すなわちmodelAに設定するのがhasOneだ(「従」側つまりmodelBではbelongsToを設定することになる)。
実際の記述方法は以下のようになる。

var $hasOne = array(‘(1) 関連先のモデル名’=>
 array(
  ‘className’=>'(2) 関連先のモデルで使用されているクラス名’,
  ‘conditions’=>'(3) 関連を定義するSQL条件の一部’,
  ‘order’=>'(4) 関連先のデータの並び順’,
  ‘dependent’=>'(5) 関連先データの同時削除’,
  ‘foreignKey’=>'(6) 関連先テーブル側の外部キー’
 )
);

(1)はここでいうmodelBの名前のこと。
(2)は(1)内で定義されているクラス名。
(3)は条件を与えてデータを限定する際に使用する。
(4)は・・・いるのかな?。
(5)は「外部キー」という考え方にふさわしく、「主」側のデータが削除された場合に、それに関連付けられた「従」側のデータも削除するかどうかの設定(trueかfalse)。
(6)はmodelB内でmodelAの主キーをなんという名前のカラムで設定しているかを記述。cakePHPの記法にそって書いていれば省略できる。

コメントを残す


守谷市(まちの情報ポータル) 無料アンケートレンタルjpForm.net