2012-05-25 49 views
4

我有一種情況,出於外部原因,我不得不直接保存連接記錄,而不是將連接記錄保存爲連接的一部分。這就是我的意思:爲什麼saveAll()只保存最後一條記錄?

  • 我有一個Firm模型,其數據是從外部來源拉。
  • 我在我的應用程序的數據庫
  • 一個County模型我有一個counties_firms加入,我使用這些外部公司關聯到縣表。

因爲生活在哪裏,我不是編輯Firm模型,也不是編輯County模型。我真的只是編輯關聯。我有一個Firm模型來封裝我需要用公司數據做的任何事情,其中​​一種方法是Firm::saveCounties($data)。它:

  • 接受傳入數據,包括公司ID和應該關聯的縣ID。
  • 刪除該縣的所有現有加入記錄
  • 嘗試保存所有新的加入記錄。

我在找的是隻有最後一個縣記錄被保存。這裏的輸入數據:

Array 
(
    [0] => Array 
     (
      [firm_id] => 13 
      [county_id] => 4fa16e24-a25c-4523-8a9e-7d1d147402e8 
     ) 

    [1] => Array 
     (
      [firm_id] => 13 
      [county_id] => 4fa16e27-ccd0-4f22-97da-7d1d147402e8 
     ) 

    [2] => Array 
     (
      [firm_id] => 13 
      [county_id] => 4fa16e4a-68f8-4fb1-95bb-7d1d147402e8 
     ) 

) 

鑑於這些數據,我創建FirmCountiesFirm之間的即時關聯,並試圖$this->CountiesFirm->saveAll($data)

正如我所提到的,在這個例子中只有最後的3個縣協會正在得救。任何想法我可能會失蹤?

謝謝。

回答

0

我相信你缺少你陣列中的水平...它看起來應該更多像這樣...

Array(
    'CountiesFirm' => array(
     [0] => Array 
     (
      [firm_id] => 13 
      [county_id] => 4fa16e24-a25c-4523-8a9e-7d1d147402e8 
     ) 
     [1] => Array 
     (
      [firm_id] => 13 
      [county_id] => 4fa16e27-ccd0-4f22-97da-7d1d147402e8 
     ) 
     [2] => Array 
     (
      [firm_id] => 13 
      [county_id] => 4fa16e4a-68f8-4fb1-95bb-7d1d147402e8 
     ) 
    ) 
) 

嘗試這一點,讓我知道你的結果

2

你的陣列是罰款。看來模型沒有清除它的id,你可以嘗試添加['id'] => null到數組中的每個記錄,以強制清除模型id。

這對我有效。

+0

非常感謝你Stefan!我只是在做一個簡單的保存,不需要那麼高效,但只能將最後一條記錄導入數據庫。將ID設置爲NULL使其完美工作。 –

相關問題