2 つのモデルがあり、HABTM 関係によって関連付けられています。Jobs と Tests です。リレーションシップを正常に追加/編集できますが (結合テーブルに表示されるのでわかります)、作成および変更されたフィールドは設定されません。
モデルの関係は次のとおりです。
//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 です。
私たちは何を間違っていますか?