代码之家  ›  专栏  ›  技术社区  ›  myk

对$重复支票的澄清

  •  0
  • myk  · 技术社区  · 6 年前

    我想澄清一下我是如何解释 $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应该只返回现有记录而不更新它吗?还是我遗漏了什么?

    1 回复  |  直到 6 年前
        1
  •  2
  •   myk    6 年前

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

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