2013-10-01 43 views
3

我正在構建一個可用作社交網絡的網站。保存HABTM數據,同時在CakePHP相關表中創建新記錄

我有一個型材表和檔案模型。

檔案 HABTM 興趣

檔案 HABTM 愛好 等等

裏有愛好幾個預定義的記錄興趣愛好表格,用戶可以選擇在表格上顯示。但如果他們沒有預先定義,他們也可以選擇添加自己的興趣愛好和興趣。

當用戶選擇添加尚不存在的興趣或興趣時,會出現問題。將預定義記錄保存到連接表中不是問題。但我似乎不能在利益在同一愛好表保存調用創建新條目。

下面是數據數組我試圖挽救的片段(我也嘗試過其他的組合,但是這一次似乎是最合乎邏輯的):

array(
    'Interests' => array(
     'Interests' => array(
      (int) 0 => '1', 
      (int) 1 => '2', 
      (int) 2 => '5' 
     ), 
     'name' => 'Internet' //this is the user-created entry 
    ), 
    'Hobbies' => array(
     'Hobbies' => array(
      (int) 0 => '1', 
      (int) 1 => '2', 
      (int) 2 => '5', 
      (int) 3 => '7', 
      (int) 4 => '8' 
     ), 
     'name' => 'Reading' //this is also a user-created entry 
    ) 
) 

保存功能:$this->Profile->saveAll($this->request->data, array('deep' => true))

問題是在保存期間新條目(在本例中爲「閱讀」和「Internet」)被忽略。沒有錯誤,其他所有內容都保存得很好。

如果我打電話$this->Profile->Hobby->saveAll($this->request->data)那麼它確實有效,但只適用於Hobby模式。當然,新的興趣將被忽略,因爲保存呼叫不會通過它的模型。

數據數組未正確格式化,還是僅在一次保存調用中無法實現?

+0

你試過saveAssociated? –

+0

是的,不起作用。 – Botch

+1

在CakePHP中保存HABTM數據會很痛苦:http://patisserie.keensoftware.com/en/pages/how-to-save-habtm-data-in-cakephp – Chris

回答

0

您可能想要使用Profile調用saveAll,而不是Hobby。  

$this->Profile->saveAll($this->request->data)