Php 关于美元支票的澄清

Php 关于美元支票的澄清,php,silverstripe,Php,Silverstripe,我想澄清一下我是否解释了$duplicateChecks的工作原理。我扩展了CsvBulkLoader类,如下所示: class UserCsvBulkLoader extends CsvBulkLoader{ public $hasHeaderRow = true; public $columnMap = [ 'UserID' => 'UserID', 'FirstName' => 'FirstName', 'LastName' => 'LastName',

我想澄清一下我是否解释了
$duplicateChecks
的工作原理。我扩展了CsvBulkLoader类,如下所示:

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中使用它。例如,我有一行信息:
1234,“John”、“Doe”、“j”。doe@example.com,“jodoe”
。现在,如果我上传一个csv文件,其中包含诸如
1234,“John”,“Doe”,“j”等信息。doe@example.com“,“jodoe25”
,为什么我的当前记录会得到更新。$duplicateChecks是否应该只返回现有记录而不更新它?还是我遗漏了什么?

好的,在检查并做了一些实验之后,
$duplicateChecks
用于
CsvBulkLoader
类中的
findExistingObject()
方法。现在,在
processRecord()
方法中使用
findexsistingobject()
方法来检查对象是否存在。如果是,则记录中的对象/行不会被复制,而是在默认情况下被更新


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

好的,在检查和做一些实验之后,
$duplicateChecks
用于
CsvBulkLoader
类中的
findExistingObject()
方法。现在,在
processRecord()
方法中使用
findexsistingobject()
方法来检查对象是否存在。如果是,则记录中的对象/行不会被复制,而是在默认情况下被更新

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