我正在使用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