2011-12-06 81 views
0

我有一個CakePHP的保存即節約多個條目每一個保存請求方法。我沒有知道爲什麼 - 我AppModel沒有任何特殊的功能,也沒有我的AppController。我的控制器和模型是非常基本的。下面是我有:鏡像數據在CakePHP中

資產負債表型號

<?php 
class BalanceSheet extends AppModel { 
    var $belongsTo = array(
     'Simulation' => array(
      'foreignKey' => 'simulation_id', 
     ) 
    ); 
} 
?> 

BalanceSheets控制器

<?php 
class BalanceSheetsController extends AppController { 
    function generate($simulation_id) { 
     $data = array(
      'BalanceSheet' => array(
       'simulation_id' => $simulation_id, 
       'year' => 2004 
      ) 
     ); 
     $this->BalanceSheet->save($data); 
    } 
} 
?> 

數據庫模式

CREATE TABLE IF NOT EXISTS `balance_sheets` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `simulation_id` int(11) NOT NULL, 
    `year` int(11) NOT NULL, 
    `buildings_and_improvements` float NOT NULL DEFAULT '0', 
    `created` datetime NOT NULL, 
    `modified` datetime NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=72 ; 

當我的資產負債表的表是空的,我瀏覽到balance_sheets /生成/ 10,這是結果:

SQL rows

什麼。有沒有搞錯?那裏發生了什麼?我怎樣才能保存一次?

編輯

原來我控制器被多次調用(我不知道爲什麼)。我將繼續介紹調試器以瞭解發生了什麼。

+0

附上保存方法,請 – ajreal

+0

剛剛在CakePHP 1.3.11上測試過,它在這裏工作。你在什麼版本上? – deizel

+0

不完全確定發生了什麼問題,在不同的MySQL版本中發生了一些奇怪的事情。你可以嘗試添加'$這個 - > BalanceSheet->創建();'保存記錄 –

回答

0

唉唉......想通了。這是一個樣式表聲明,有人在代碼中放入了一個不正確的相對路徑 - 它傳遞的是「css」作爲模擬ID,這就是爲什麼重複被插入爲0的原因!

這是什麼讓我推斷出這一點(https://stackoverflow.com/a/353493/390977):

檢查你的佈局不存在聯繫,例如錯誤配置 鏈接的favicon.ico將導致控制器動作來觸發 爲第二次。確保favicon.ico的點指向根目錄 而不是本地目錄,否則請求將產生 爲/controller/action/favicon.ico而不是/favicon.ico - 從而 觸發你的行動。