我们有两个与a相关的模型,属于许多(HABTM)关系:工作,测试。我们能够成功添加/编辑关系(我们知道因为它们出现在连接表中),但是它们的创建和修改字段永远不会被设置。
以下是模型关系:
//Job.php
public $hasAndBelongsToMany = array (
'Test' => array (
'classname' => 'Test',
'foreignKey'=>'job_id',
'joinTable' => 'jobs_tests',
'associatedForeignKey' => 'test_id'
)
);
//Test.php
public $hasAndBelongsToMany = array(
'Job' => array(
'className'=> 'Job',
'joinTable'=>'jobs_tests',
'foreignKey' => 'test_id',
'associatedForeignKey'=> 'job_id'
)
);
这是/view/Jobs/edit.ctp
echo $this->Form->select('Test', $test_options, array('class'=>'form-control', 'multiple'=>'checkbox'));
//This is always empty (nothing selected/checked).
以下是我们在控制器中更新的方式......
if ($this->request->isPut() ) {
$data = $this->request->data;
$save = $this->Job->save( $data );
if ($save) {
$this->Session->setFlash('Job edited');
} else {
$this->Session->setFlash('Error editing job');
}
}
连接表中的记录是正确的,但创建和修改的记录始终为NULL。
我们做错了什么?
答案 0 :(得分:0)
即使在HABTM联接表中,我也不认为蛋糕会填充created
和modified
。 (我在我的一个项目中尝试过,它也没有工作,但也许它可以被激活了吗)
但是,如果您未在关联数组中将unique
设置为 true ,则会在每次更新时删除并重新创建记录,因此update
字段这里没有任何意义。
如果你真的想要这两个字段,那么你必须使用Has Many Trough关系。