我有一個提問和獲取答案的網站。當問一個問題時,我希望能夠用多個主題標記新問題。使用多重選擇,我已將一組topic_ids發送回控制器。我一直在關注Cake的文檔,但是我收到很多錯誤。在CakePHP中鏈接多對多關聯
這是鏈接關聯實體與多對多關係的正確方法嗎?如果需要的話,我可以提供更多信息或代碼。
$question = $this->Questions->newEntity();
if ($this->request->is('post')) {
$topics = array_map(
function($id) {
$topic = $this->Questions->Topics->get($id);
$topic->_joinData = $this->Questions->TopicsQuestions->newEntity();
// user_id is metadata in the topics_questions table
$topic->_joinData->user_id = $this->Auth->User()->id;
return $topic;
},
// this is passed back as an array of topic_id
$this->request->data['topics'];
);
$this->Questions->Topics->link($question, $topics);
$question = $this->Questions->patchEntity($question, $this->request->data, ['associated' => ['Topics']]);
if ($this->Questions->save($question)) {
return $this->redirect(['action' => 'view', $question->id]);
} else {
$this->Flash->error(__('The question could not be saved. Please, try again.'));
}
}
歡迎來到Stack Overflow。每當接收到錯誤時,請將它們添加到您的問題中,包括完整的堆棧跟蹤(理想情況下,以可正常讀取的方式從日誌中複製),即使問題對熟悉CakePHP!的人員來說也是顯而易見的。提示:'BelongsToMany :: link()'方法的API文檔對於該方法的作用是什麼,以及它期望提供什麼樣的數據? – ndm
謝謝。我對蛋糕很陌生。我知道如何使用調試工具包,但我不知道如何以可讀的形式獲取堆棧跟蹤,我可以將其複製並粘貼到此處。有了這段代碼,我得到了「500錯誤運行時異常」 「源實體和每個目標實體都假定已經持久」這是否意味着我需要在保存該問題後進行鏈接調用? – pjenk213
工作!非常感謝您的幫助,並將我引導至解決方案,而不是將其交給我。對此,我真的非常感激。 – pjenk213