我正在使用CakePHP 1.3,並且在循環中插入新記錄(幾千個),如果它們是新的或更新現有記錄(如果它們已經存在)。但是我保存的方式並不檢查記錄是否已經存在;相反,我在每個記錄中分配一個主鍵值。我分配的這個ID保證是唯一的。如果這個ID不存在,CakePHP似乎知道插入,否則進行更新。CakePHP 1.3:插入或更新記錄的正確方法
但是,我不確定我是否以正確的方式進行操作。我讀here如果我在一個循環創造了新的記錄,我需要做$this->create()
,這一點我在我知道每個記錄將是獨一無二的其他功能實現。我不這樣做,因爲它似乎沒有錯誤地工作,我不需要再檢查每條記錄的存在。
我插入或更新的每個記錄數組都有指示相應表中的主鍵的鍵id
,並且每個數組都包含適當關聯的兩個模型的數據。
例如
$this->saveAll($myData);
Array
(
[MyModel] => Array
(
[id] => 123
[xyz] => ...
...
)
[MySecondModel] => Array
(
[id] => 789
[my_model_id] => 123
[qwe] => ...
...
)
)
是我在做什麼好,或者我需要檢查它是否存在,然後$this->create()
,如果有必要嗎?
您能否詳細說明「溢出數據」部分?我的數據數組並不一定要定義所有的列。也許有一個例子? – musicliftsme
通過「溢出數據」我的意思是這樣的:假設你更新一個值爲「foo」的記錄欄「bar」。在下一個循環中,創建一個新記錄,但不要調用create()或設置「bar」;在這種情況下,你的新紀錄也將在這一欄中有「富」。你可能不想要的東西。這就是爲什麼建議每次調用create()。 – JvO