CakePHPノート2:自己参照モデルの定義方法

下記の用な自己参照するデータベーステーブルがある場合どのようにして、cakephpのモデルを定義するの?

CREATE TABLE `nodes` (
`id` INTEGER NOT NULL AUTO_INCREMENT ,
`name` VARCHAR(40) NOT NULL ,
`parent_id` INTEGER NOT NULL ,
PRIMARY KEY (`id`),
);

注)parent_idは、親Nodeと子Nodeを結びつける為のForignKey。

解決方法としては、親ノードとして参照する為の$belongsTo、及び子ノードを参照する為の$hasManyを定義する必要があります。モデルは下記の用になります。

class Node extends AppModel {
   var $name = 'Node';
   var $belongsTo = array('ParentNode' =>
      array('className' => 'Node','foreignKey' => 'parent_id'));
   var $hasMany = array('ChildNode' =>
      array('className' => 'Node','foreignKey' => 'parent_id'));
}

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s