public function test() { $subject = new AutoIncrementChangeEvent(); $subject->setColumn(new Column('id'))->setOldValue(1)->setNewValue(2); static::assertSame('id', $subject->getColumn()->getName()); static::assertSame(1, $subject->getOldValue()); static::assertSame(2, $subject->getNewValue()); }
/** * @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)); } } } }
/** * @param \DatabaseExporterImporter\Model\Observer\Import\AutoIncrementObserver\AutoIncrementChangeEvent $event * @throws \RuntimeException */ public function notify(AutoIncrementChangeEvent $event) { $dependentColumns = $this->foreignKeysFinder->setTables($this->tables)->setParentColumn($event->getColumn())->getDependentColumns(); foreach ($dependentColumns as $dependentColumn) { foreach ($this->tables as $table) { if ($table->getName() === $dependentColumn->getTable()->getName()) { foreach ($table->getDataRows() as $dataRow) { foreach ($dataRow->getDataColumns() as $dataColumn) { if (true === $dataColumn->isOriginalValue() && $dataColumn->getName() === $dependentColumn->getName() && $dataColumn->getValue() === $event->getOldValue()) { $dataColumn->setOriginalValue(false)->setValue($event->getNewValue()); } } } } } } }