如何让Cake使用REPLACE INTO而不是INSERT INTO?我有一个将数据保存到数据库的操作,但我不想重复输入。主键(id)是唯一的,如果该值已经存在,我不希望它作为新行被输入。CakePHP:覆盖现有的重复数据
正在保存的数据也是动态生成的,所以退出时出错并不合适。
编辑 Initally我保存的数据是在一个单一的大阵
$data = Array([0] => 'value1', [1] => 'value2', [2] => 'value3') etc
我通过这个数组试图循环,节省了每个值作为一个新的记录
foreach ($data as $value) {
$save_data['Model'] = array('field' => $value);
}
Classregistry::init('Model')->saveAll($save_data);
我正在使用Classregistry,因为我正在将数据保存到不同的模型。目前,当试图插入重复记录时,此代码会变得很糟糕,因为'field'是唯一的索引。在使用CakePHP之前,我只是使用了REPLACE INTO语法而没有任何问题。我想在Cake中实现类似的功能。
我目前唯一的解决办法是允许输入重复的,但只有将它们分组显示唯一行。
值得注意的有这样做的其他方式,如前设置模型上的'id' PARAM做保存。 – jeremyharris 2012-04-12 15:40:07
我不确定我是否清楚。我有大量未知大小的数据。我想循环数组并将每个条目保存为新记录,但避免插入重复项。 – Robert 2012-04-12 15:45:07
同样的想法适用。你怎么知道它是独一无二的?你在大阵中有身份证吗?如果是这样,请使用它。否则,你需要循环查找其他一些独特的字段。您可能需要更改您的问题,并包含可能的数组值的片段。 – jeremyharris 2012-04-12 15:47:45