怎么用表与自己联系?

时间:2011-10-30 11:34:18

标签: cakephp associations

如何使用与自身关联的表? 我使用cakephp和table是Section:

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)
)

此表与自身关联,我使用属于有很多关联,我的模型是:

class Section extends AppModel {
    var $name = 'Section';
    var $primaryKey = 'SECTIONID';
    var $displayField = 'TITLE';
}

我使用属于在两个表中有很多关联。但我不能在这个例子中使用。 谢谢你的帮助。

1 个答案:

答案 0 :(得分:6)

一旦你知道诀窍,自我参照模型在Cake中很简单,但是你不能通过不使用Cake命名约定来为自己做任何好处。我假设您使用的是无法控制的数据源: - )

Class Section extends AppModel {

  var $belongsTo = array(
    'Parent'=>array(
      'className'=>'Section',
      'foreignKey'=>'SECTIONPARENTID'
    )
  );

  var $hasMany = array(
    'Children'=>array(
      'className'=>'Section',
      'foreignKey'=>'SECTIONPARENTID'
    )
  );

}

当您运行查询,例如$ this-> Section-> find(' first')时,您将获得一个如下所示的返回数组:

section => array(
  SECTIONID,
  ...
  'Parent'=>array(
    'SECTIONID',
    ....
  ),
  'Children'=>array(
    [0] => array(
      [SECTIONID]
    ),
    [1] => array(
      [SECTIONID]
    ),
    ...
  )
)