2012-10-29 55 views
1

我希望創建並保存像什麼,我有屬於關聯的數據做了相關的數據 - 相關數據動態創建,也產生對外ID和一個函數調用來白水或saveAssocated具有交易保存在飛內置。CakePHP如何在不知道一個saveAll中的外鍵的情況下創建hasMany數據?

但這似乎不是在的hasMany關係數據的情況。以用戶和評論爲例。註釋具有user_id作爲外鍵。

看來我不能用我看了一些文檔上的用戶

Array(
    'name' => 'Jack', 
    'email' => '[email protected]', 
    'Comment' => array(
     array(
      'title' => 'I like this article.' 
     ) 
    ) 
) 

使用單白水($數據)保存用戶數據$。看來我需要提及user_id作爲註釋數據創建正確的外鍵。

如果是這樣的話,因爲我沒有用戶ID它的創建,直到,看來我需要代碼來讓SAVE發生兩次。

我真的覺得我失去了一些東西。應該有一個CAKE方法來做到這一點。

回答

5

這是自動蛋糕,只要你遵守的規則和相應的格式化數據來完成。對於hasMany協會,主要的模型數據,以及相關的模型數據,需要對在同一水平上字符串鍵設置,像

array 
(
    'User' => array(), 
    'Comment' => array() 
) 

還要注意的是

的白水功能僅僅是一個包裝saveMany和saveAssociated方法。它會檢查數據並確定它應該執行的保存類型。如果數據格式爲數字 索引數組,saveMany將被調用,否則saveAssociated使用 。

該函數接收相同的選項,前兩者,並且是 通常是向後兼容的功能。建議根據情況使用 saveMany或saveAssociated。

所以,要麼就行了。長話短說,模型數據需要通過字符串鍵來分隔和索引,它基本上與find()調用將返回它的格式相同。這樣Cake會知道它需要保存相關的數據,並且會自動插入Comment記錄的外鍵。

array 
(
    'User' => array 
    (
     'name' => 'Jack', 
     'email' => '[email protected]' 
    ), 
    'Comment' => array 
    (
     array 
     (
      'title' => 'I like this article.' 
     ) 
    ) 
) 

又見

+0

謝謝!我其實犯了2個錯誤。一個是你指出的。另一個是在一個ossossited模型中的「notempty」字段規則。我實際上需要這個領域來保持空值。現在它正在工作。 – Hao

+0

不客氣... – ndm

+0

你可以同時爲多個用戶和多個評論爲每個用戶做到這一點嗎? – geoidesic

相關問題