Php 如何通过检查csv中的2列值来检查csvbulkloader(silverstripe)中的重复检查
在Php 如何通过检查csv中的2列值来检查csvbulkloader(silverstripe)中的重复检查,php,silverstripe,Php,Silverstripe,在$duplicateChecks中,我需要检查名字和金额。如何实现这一点?如果我理解正确,您希望对两列进行复合检查以识别重复项 在这种情况下,您需要提供自己的批量加载程序/导入类,并重载findExistingObject方法 你可以这样做: public $columnMap = array( 'Date' => 'Date', 'FirstName' => 'FirstName', 'amount' => 'Amount',
$duplicateChecks
中,我需要检查名字和金额。如何实现这一点?如果我理解正确,您希望对两列进行复合检查以识别重复项
在这种情况下,您需要提供自己的批量加载程序/导入类,并重载findExistingObject
方法
你可以这样做:
public $columnMap = array(
'Date' => 'Date',
'FirstName' => 'FirstName',
'amount' => 'Amount',
);
public $duplicateChecks = array(
'FirstName' => 'FirstName',
);
你能详细说明你需要检查什么吗?我想把这个3列的csv上传到我的数据库。但是我想通过包含firstname和Amount来检查db中的重复项。你的意思是,如果firstname=Dan和Amount=1,那么这只是firstname=Dan和Amount=1的其他行的重复项;但不是FirstName=Dan和Amount=2或FirstName=Nad和Amount=1的重复项?FirstName=Dan和Amount=1的重复项这是一个已知问题:
class MyCsvBulkLoader extends CsvBulkLoader
{
...
public function findExistingObject($record, $columnMap = [])
{
return DataObject::get($this->objectClass)
->filter(array(
'FirstName' => $record['FirstName'],
'amount' => $record['amount'],
))->first();
}
...
}