2012-09-11 79 views
1

我正在編寫一個安裝程序,因此我需要將多種類型的數據保存在不同的表中,即使未關聯也是如此。理想情況下,我很想一次性處理這一切。以下是我迄今爲止所做的簡要介紹。在CakePHP中保存非關聯數據

這是我準備保存上述數據的蛋糕陣列。

$initialData = array(
    array('Option' => array('name' => 'version', 'value' => '1.0.0',)), 
    array('Option' => array('name' => 'non-version', 'value' => '1.0.2',)), 
    array('User' => array('username' => 'skyler', 'password' => 'hi',)), 
); 

然後我用下面的方法嘗試並保存它。

$this->Option->saveMany($initialData) 

這不僅節省了Option行,而不是User行。思考?

注意:這不是關聯數據。選項和用戶不關聯,但需要同時保存。

回答

2

$this->Option->saveMany將工作,因爲您正在爲單個表保存多個記錄。但是,由於用戶未關聯到該選項,因此不知道如何處理數據。您需要致電$this->User->save($initialData)

如果您希望有多個用戶記錄,則可以撥打$this->User->saveMany($initialData)。請致電$this->User->create()

+0

所以我基本上需要爲每個表格/模型使用單獨的$ this-> Model-> save [Many]? – alairock

+0

如果他們不相關...是的。 –

0

我通常只是發送一個SQL腳本和我的包創建和填充數據庫表。

有關如何在CakePHP中讀取和執行文件的示例,請參閱Multiple SQL query not executing in Cakephp

+0

顯然是最簡單的答案。問題是,如果我的腳本有一個表前綴呢?這需要是動態的,這就是爲什麼我要這樣做CakePHP的方式。 – alairock

+0

您可以在原始sql文件中使用宏(例如[prefix] _my_table.foo),並在運行查詢之前使用str_replace()替換爲真實前綴。 – RichardAtHome

+0

有效,但我絕對想堅持CakePHP約定。我打算構建我的數據數組,並使用Model :: save [Many]以這種方式填充我的表。儘管感謝您的幫助。 – alairock