为了简单起见,我有一个关于人员及其电子邮件的Excel电子表格。我想要的是使用saveAll将它们一次全部插入数据库中。

问题是,每当电子表格中有一些新人时,我都需要重新上传它。在这种情况下,我需要saveAll来保存所有新人员,并忽略由于数据库中已经存在旧人员而导致的验证错误(人员电子邮件具有唯一的规则)。有任何想法吗?

编辑:我现在所拥有的是,当saveAll方法尝试保存已存在的记录(即其电子邮件已经在数据库中)时,它不会保存任何内容。我需要保存来自电子表格的新内容,并忽略已存在的内容(即不保存已存在的内容)。

最佳答案

将第二个参数设置为false,以便不检查验证。

根据您的要求,我可以这样做:

遍历数据并检查该特定记录是否存在,如果不存在,则将其推入临时数组。

现在,您可以将该临时数组用作saveAll调用的参数。

伪代码将如下所示:

foreach ($originalDataToBeSaved as $something) {
    if ($this->find('count', array('conditions' => $yourConditions)) == 0) {
        $tempArray[] = $something;
    }
}
$this->saveAll($tempArray);


编辑:我更新了代码以反映Nunser所说的内容,新数据没有ID,因此我们需要使用其他搜索条件进行搜索。

关于php - 具有CakePHP saveAll函数可忽略错误并继续,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25693728/

10-11 03:11