Với bảng có id và parent_id ta có trick sau để tham chiếu chính nó
tạo ra bảng sau
create table SECTIONS ( SECTIONID int(11) not null auto_increment, TITLE char not null, CONTROLID int(11) not null, SECTIONPARENTID int(11), primary key (SECTIONID) )
trong model của cakephp 2
Class Section extends AppModel { var $belongsTo = array( 'Parent'=>array( 'className'=>'Section', 'foreignKey'=>'SECTIONPARENTID' ) ); var $hasMany = array( 'Children'=>array( 'className'=>'Section', 'foreignKey'=>'SECTIONPARENTID' ) ); }
Khi chạy câu query chẳng hạn như $this->Section->find(‘first’) sẽ lấy được mảng như dưới
section => array( SECTIONID, ... 'Parent'=>array( 'SECTIONID', .... ), 'Children'=>array( [0] => array( [SECTIONID] ), [1] => array( [SECTIONID] ), ... ) )
Ngoài cách này ra thì sử dụng Tree Behaviors cũng là 1 cách mà sau này người viết sẽ hướng dẫn chi tiết sau