如何通过检查csv中的2个colomn值来检查csvbulkloader(silverstripe)中的重复检查

时间:2018-03-14 15:33:43

标签: php silverstripe

public $columnMap = array(

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


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

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

1 个答案:

答案 0 :(得分:3)

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

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

您可以执行以下操作:

class MyCsvBulkLoader extends CsvBulkLoader
{
    ...

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

    ...
}