src/Shell/ImportShell.php
protected function _importResult(Import $import, array $headers, int $rowNumber, array $data) : void
    {
        $importTable = TableRegistry::get('CsvMigrations.ImportResults');
        Assert::isInstanceOf($importTable, ImportResultsTable::class);

        $query = $importTable->find('all')
            ->enableHydration(true)
            ->where(['import_id' => $import->get('id'), 'row_number' => $rowNumber]);

        try {
            $importResult = $query->firstOrFail();
        } catch (RecordNotFoundException $e) {
            return;
        }

        Assert::isInstanceOf($importResult, ImportResult::class);

        // skip successful imports
        if ($importTable::STATUS_SUCCESS === $importResult->get('status')) {
            return;
        }

        $table = TableRegistry::get($importResult->get('model_name'));

        $data = $this->_prepareData($import, $headers, $data);
        $csvFields = FieldUtility::getCsv($table);
        $data = $this->_processData($table, $csvFields, $data);

        // skip empty processed data
        if (empty($data)) {
            $this->_importFail($importResult, ['Row has no data']);

            return;
        }

        try {
            $entity = $table->newEntity();
            $entity = $table->patchEntity($entity, $data);

            $table->save($entity) ?
                $this->_importSuccess($importResult, $entity) :
                $this->_importFail($importResult, $entity->getErrors());
        } catch (CakeException $e) {
            $this->_importFail($importResult, [$e->getMessage()]);
        } catch (PDOException $e) {
            $this->_importFail($importResult, [$e->getMessage()]);
        }
    }
protected function _importResult(Import $import, array $headers, int $rowNumber, array $data) : void
    {
        $importTable = TableRegistry::get('CsvMigrations.ImportResults');
        Assert::isInstanceOf($importTable, ImportResultsTable::class);

        $query = $importTable->find('all')
            ->enableHydration(true)
            ->where(['import_id' => $import->get('id'), 'row_number' => $rowNumber]);

        try {
            $importResult = $query->firstOrFail();
        } catch (RecordNotFoundException $e) {
            return;
        }

        Assert::isInstanceOf($importResult, ImportResult::class);

        // skip successful imports
        if ($importTable::STATUS_SUCCESS === $importResult->get('status')) {
            return;
        }

        $table = TableRegistry::get($importResult->get('model_name'));

        $data = $this->_prepareData($import, $headers, $data);
        $csvFields = FieldUtility::getCsv($table);
        $data = $this->_processData($table, $csvFields, $data);

        // skip empty processed data
        if (empty($data)) {
            $this->_importFail($importResult, ['Row has no data']);

            return;
        }

        try {
            $entity = $table->newEntity();
            $entity = $table->patchEntity($entity, $data);

            $table->save($entity) ?
                $this->_importSuccess($importResult, $entity) :
                $this->_importFail($importResult, $entity->getErrors());
        } catch (CakeException $e) {
            $this->_importFail($importResult, [$e->getMessage()]);
        } catch (PDOException $e) {
            $this->_importFail($importResult, [$e->getMessage()]);
        }
    }
protected function _importResult ( Import $ import , array $ headers , int $ rowNumber , array $ data ) : void { $ importTable = TableRegistry :: get ( 'CsvMigrations.ImportResults' ) ; Assert :: isInstanceOf ( $ importTable , ImportResultsTable :: class ) ; $ query = $ importTable -> find ( 'all' ) -> enableHydration ( true ) -> where ( [ 'import_id' => $ import -> get ( 'id' ) , 'row_number' => $ rowNumber ] ) ; try { $ importResult = $ query -> firstOrFail ( ) ; } catch ( RecordNotFoundException $ e ) { return ; } Assert :: isInstanceOf ( $ importResult , ImportResult :: class ) ; // skip successful imports if ( $ importTable :: STATUS_SUCCESS === $ importResult -> get ( 'status' ) ) { return ; } $ table = TableRegistry :: get ( $ importResult -> get ( 'model_name' ) ) ; $ data = $ this -> _prepareData ( $ import , $ headers , $ data ) ; $ csvFields = FieldUtility :: getCsv ( $ table ) ; $ data = $ this -> _processData ( $ table , $ csvFields , $ data ) ; // skip empty processed data if ( empty ( $ data ) ) { $ this -> _importFail ( $ importResult , [ 'Row has no data' ] ) ; return ; } try { $ entity = $ table -> newEntity ( ) ; $ entity = $ table -> patchEntity ( $ entity , $ data ) ; $ table -> save ( $ entity ) ? $ this -> _importSuccess ( $ importResult , $ entity ) : $ this -> _importFail ( $ importResult , $ entity -> getErrors ( ) ) ; } catch ( CakeException $ e ) { $ this -> _importFail ( $ importResult , [ $ e -> getMessage ( ) ] ) ; } catch ( PDOException $ e ) { $ this -> _importFail ( $ importResult , [ $ e -> getMessage ( ) ] ) ; } }
Import row.

@param \CsvMigrations\Model\Entity\Import $import Import entity
@param string[] $headers Upload file headers
@param int $rowNumber Current row number
@param mixed[] $data Row data
@return void
Import row .