下記の用な自己参照するデータベーステーブルがある場合どのようにして、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')); }