我将从我的表格的结构开始。我有一个使用 hasOne 关系与 Tutors 表链接的 Contacts 表。Tutors 表使用 HABTM 关系与 Disciplines 表链接,其中 Disciplines_Tutors 作为连接表。现在,我将 Contacts 和 Tutors 属性都放在一个统一的联系表单中。Disciplines 表属性也是如此。发生的情况是我能够将联系人和导师保存到各自的表中,但我无法保存到 Disciplines_Tutors 连接表中。
下面是表格结构,便于理解:
如果从 Tutors 添加表单保存,则不会出现此问题。它完美保存。
Contacts 表有:id,自己的属性
Tutors 表有:id,自己的属性,contact_id
学科表有:id,学科
Disciplines_Tutors 表有:id,学科id,tutor_id
在统一的联系表中,我可以查看可用的学科并进行选择。但是保存时,它不会保存到连接表中。
导师型号:
public $hasAndBelongsToMany = array(
'Discipline' => array(
'className' => 'Discipline',
'joinTable' => 'disciplines_tutors',
'foreignKey' => 'tutor_id',
'associationForeignKey' => 'discipline_id',
'unique' => 'keepExisting',
'conditions' => '',
'fields' => '',
'order' => '',
'limit' => '',
'offset' => '',
'finderQuery' => '',
'deleteQuery' => '',
'insertQuery' => ''
)
);
学科模型:
public $hasAndBelongsToMany = array(
'Tutor' => array(
'className' => 'Tutor',
'joinTable' => 'disciplines_tutors',
'foreignKey' => 'discipline_id',
'associationForeignKey' => 'tutor_id',
'unique' => 'keepExisting',
'conditions' => '',
'fields' => '',
'order' => '',
'limit' => '',
'offset' => '',
'finderQuery' => '',
'deleteQuery' => '',
'insertQuery' => ''
)
);
学科导师模型:
public $belongsTo = array(
'Tutor' => array(
'className' => 'Tutor',
'foreignKey' => 'tutor_id',
'conditions' => '',
'fields' => '',
'order' => ''
),
'Discipline' => array(
'className' => 'Discipline',
'foreignKey' => 'discipline_id',
'conditions' => '',
'fields' => '',
'order' => ''
)
);
ContactsController 有:
$disciplines = $this->Contact->Tutor->Discipline->find('list');
在公共功能添加部分。因此,使选择列表的检索成为可能。
Tutors、Disciplines、DisciplinesTutors 控制器都在使用 saveAll 方法。
在统一联系人表单的添加表单中。它有:
echo $this->Form->input('Tutor.Discipline',array('type'=>'select','multiple'=>true));
这允许我检索可供选择的学科列表。
我不确定还需要什么其他信息。随意提问,我会将它们添加到这个问题中。
另外,请对我放轻松,因为我对 CakePHP 还很陌生。
谢谢!