【问题标题】:How to check duplicatechecks in csvbulkloader (silverstripe) by checking 2 colomn values in csv如何通过检查 csv 中的 2 个列值来检查 csvbulkloader(silverstripe)中的重复检查
【发布时间】:2018-03-14 15:33:42
【问题描述】:
public $columnMap = array(

    'Date'      => 'Date',
    'FirstName' => 'FirstName',
    'amount'      =>  'Amount',


);
public $duplicateChecks = array(
    'FirstName' => 'FirstName',
);

$duplicateChecks 我需要检查名字和金额。我该如何实现?

【问题讨论】:

  • 您能否详细说明您需要检查的内容?
  • 我想将这 3 列的 csv 上传到我的数据库。但我想通过连接名字和数量来检查数据库中的重复项
  • 您的意思是如果 FirstName = Dan 和 Amount = 1,那么这只是与 FirstName = Dan 和 Amount = 1 的其他行的重复;但不是 FirstName = Dan 和 Amount = 2 或 FirstName = Nad 和 Amount = 1 的重复项?
  • FirstName = Dan 和 Amount = 1 的重复项

标签: php silverstripe


【解决方案1】:

如果我理解正确,您希望对两列进行复合检查以识别重复项。

在这种情况下,您需要提供自己的批量加载器/导入类并重载findExistingObject 方法。

你可以这样做:

class MyCsvBulkLoader extends CsvBulkLoader
{
    ...

    public function findExistingObject($record, $columnMap = [])
    {
        return DataObject::get($this->objectClass)
            ->filter(array(
                'FirstName' => $record['FirstName'],
                'amount' => $record['amount'],
            ))->first();
    }

    ...
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-10
    • 1970-01-01
    • 1970-01-01
    • 2012-04-22
    • 1970-01-01
    • 2019-03-17
    • 2016-09-12
    • 1970-01-01
    相关资源
    最近更新 更多