как использовать таблицу этой ассоциации с самим собой? - PullRequest
3 голосов
/ 30 октября 2011

как использовать таблицу этой ассоциации с самим собой? Я использую CakePHP, а таблица в разделе:

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 Ответ

6 голосов
/ 31 октября 2011

Самоссылочные модели просты в 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]
    ),
    ...
  )
)
...