私は、両方ともbelongsTo関係を持つExamsQuestionsテーブルを通じてbelongsToMany関係にリンクされているexam_idとquestion_idを持つ関連テーブルを作成しようとしています。_joinDataがCakephp 3のリクエストを正しく更新しない
私はidsを正しく保存できるので、(少なくともいくつかの)関係を正しく作成しましたが、関連テーブルには "questionPoints"フィールドと "isActive"フィールドもありますが、更新する。
を送信するために.jsファイルを使用しかし、私は、コントローラの機能からresponseを取得していたときに、joindataが正しくオブジェクトに設定されていません。
データベースでは、._joinata情報の一部(ids)が適用されても、行はまったく更新されません。私はCakePHPの組み込みのアソシエーションであり、デフォルトでアソシエーションの1レベルが適用されるため、参加していると思います。
ExamsControllerでは、ビューを正しくレンダリングするために、まずビューにデータを送信します。その後、要求データを使用してエンティティにパッチを適用し、エンティティを保存します。
public function take($id)
{
if ($this->request->is('get'))
{
$exam = $this->Exams->get($id, [
'contain' => ['ExamTemplates' => ['Questions.Answers']]
]);
$users = $this->Exams->Users->find('list', ['limit' => 200]);
$examTemplates = $this->Exams->ExamTemplates->find('list', ['limit' => 200]);
$this->set(compact('exam', 'users', 'examTemplates'));
}
if ($this->request->is('post')) {
$exam = $this->Exams->get($id, ['contain' => ['Questions']]);
$this->autoRender = false;
$exam = $this->Exams->patchEntity($exam, $this->request->data);
if ($this->Exams->save($exam)) {
$response = [
'success' => true,
'message' => __("exam updated"),
'this' => $this->request->data,
];
$exam_id = $_POST['id'];
$this->Flash->success(__('The exam has been updated.'));
} else {
$response = [
'success' => false,
'error' => $exam->errors(),
'request' => $this->request->data,
'message' => __("Error creating template")
];
}
$this->response->body(json_encode($response));
}
}
ありがとうございます。