对 $duplicateChecks 的澄清

Clarification on $duplicateChecks

如果我解释 $duplicateChecks 的工作原理,我想澄清一下。我扩展了 CsvBulkLoader class 如下:

class UserCsvBulkLoader extends CsvBulkLoader{

public $hasHeaderRow = true;

public $columnMap = [
'UserID'    =>  'UserID',
'FirstName' =>  'FirstName',
'LastName'  =>  'LastName',
'Email'     =>  'Email',
'Username'  =>  'Username'
];

public $duplicateChecks = [
'Email'     =>  'Email'
];

}

我在拥有当前记录的 UserLogin DataObject 中使用它。例如,我有 1 行信息:1234,"John","Doe","j.doe@example.com","jodoe"。现在,如果我上传一个包含 1234,"John","Doe","j.doe@example.com","jodoe25" 等信息的 csv 文件,为什么我的当前记录会更新。 $duplicateChecks 是否应该只 return 现有记录而不更新它?还是我遗漏了什么?

好的,经过检查和实验,在CsvBulkLoaderclass中的findExistingObject()方法中使用了$duplicateChecks。现在,findExistingObject() 方法用于 processRecord() 方法来检查对象是否存在。如果是,则记录中的object/row默认不会被复制而是更新

如果我不希望此对象被复制或更新,那么我需要重写 processRecord() 方法以防它找到匹配的对象(即重复对象)并跳过它。这是我可以用于这种情况的当前解决方案,但也许有更好的方法。