2013-05-07 31 views
0

所以我有一個Message模型。當創建消息時,我想要創建新的Recipient記錄。 (消息hasMany Recipient,Recipient belongsTo Message)。在CakePHP中保存新的關聯記錄

意圖是,這些關聯記錄中的message_id字段會使用新的Message id自動填充。

我試圖格式化數據都不爲過,和我認識的saveAllsaveAssociated方法,但似乎沒有任何工作......這就是我認爲會的工作:

數據傳遞到保存:

[Message] => array 
    (
     [subject] => Foo bar 
     [body] => Blah blah blah. 
    ) 
[Recipient] => array 
    (
     [0] => array 
      (
       [user_id] => 1 
      ) 
     [1] => array 
      (
       [user_id] => 5 
      ) 
     [2] => array 
      (
       [user_id] => 6 
      ) 
    ) 

使用saveMany,白水,saveAssociated似乎並沒有發揮作用(即使有 '深' 設置爲true)。

+0

有收件人驗證規則嗎? – Dave 2013-05-07 00:51:00

+0

不!沒有。當我手動保存時,我可以很好地保存...我只想保持我的代碼精簡和常規。 – 2013-05-07 01:09:12

回答

0

幾件事:

1)正在創建的消息是一個新的記錄。我意識到後,我沒有在我的控制器中有$this->Message->create()。現在,我已經試過沒有,它工作正常,但我認爲這是包括它的最佳做法。 2)由於我需要保存多個關聯記錄,所以我必須使用saveAllsaveMany,但這樣做會導致額外的空行被添加,因爲主記錄沒有在數字上索引(這是saveAll想要的)。

因此,這裏是從我的控制器一些代碼:

if ($this->request->is('post')) { 
    $this->Message->create(); 
    if ($this->Message->saveAll($data, array('deep' => true))) { 
     // code here 
    } 
} 

這裏是我的數據是如何構成的:

Array 
(
    [0] => Array 
     (
      [Message] => Array 
       (
        [subject] => Foo 
        [body] => bar 
        [Recipient] => Array 
         (
          [0] => Array 
           (
            [user_id] => 1 
           ) 
          [1] => Array 
           (
            [user_id] => 6 
           ) 
          [2] => Array 
           (
            [user_id] => 38 
           ) 
         ) 
       ) 
     ) 

)  

這將創建一個新Message,妥善新建Recipient記錄相關聯。

相關問題