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()
方法,以防它找到匹配的对象(即重复对象)并跳过它。这是当前我可以用于此场景的解决方案,但可能有更好的方法