#cakephp #associations
#cakephp #ассоциации
Вопрос:
как использовать таблицу, которая связана с самой собой? я использую 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)
)
эта таблица связана с самой собой, и я использую belong to и имеет много ассоциаций, и моя модель :
class Section extends AppModel {
var $name = 'Section';
var $primaryKey = 'SECTIONID';
var $displayField = 'TITLE';
}
я использую belong to и имеет много ассоциаций в двух таблицах. но я не могу использовать в этом примере.
спасибо за помощь.
Ответ №1:
Самореферентные модели просты в 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]
),
...
)
)