/** * @throws \Exception */ public function import() { $tables = $this->dataParser->getTables(); $this->observer->setTables($tables); $autoIncrementEvent = new AutoIncrementChangeEvent(); foreach ($tables as $table) { $autoIncrementEvent->setColumn($this->autoIncrementFinder->getAutoIncrementColumn($table)); foreach ($table->getDataRows() as $dataRow) { $dataRowValues = []; foreach ($dataRow->getDataColumns() as $dataColumn) { if (null !== $autoIncrementEvent->getColumn() && $autoIncrementEvent->getColumn()->getName() === $dataColumn->getName()) { $autoIncrementEvent->setOldValue($dataColumn->getValue()); continue; } $dataRowValues[] = $dataColumn; } $lastInsertId = $this->insertRecord($table, $dataRowValues); if (null !== $autoIncrementEvent->getColumn()) { $this->observer->notify($autoIncrementEvent->setNewValue($lastInsertId)); } } } }