/**
  * @param \DatabaseExporterImporter\Entity\Table $table
  * @return \DatabaseExporterImporter\Entity\Column|null
  */
 public function getAutoIncrementColumn(Table $table)
 {
     foreach ($table->getColumns() as $column) {
         if (true === $column->isAutoIncrement()) {
             return $column;
         }
     }
 }
 public function test()
 {
     $tableName = mt_rand();
     $subject = new Table($tableName);
     static::assertSame($tableName, $subject->getName());
     static::assertCount(0, $subject->getColumns());
     $columnName = mt_rand();
     $column = new Column($columnName);
     $subject->addColumn($column);
     static::assertCount(1, $subject->getColumns());
     $firstColumn = reset($subject->getColumns());
     static::assertSame($columnName, $firstColumn->getName());
     $dataRow = new DataRow();
     static::assertCount(0, $subject->getDataRows());
     $subject->addDataRow($dataRow);
     static::assertCount(1, $subject->getDataRows());
 }
 /**
  * @return array
  */
 public function getForeignKeyValues()
 {
     $values = [];
     foreach ($this->table->getColumns() as $column) {
         if (null !== $column->getForeignKey()) {
             $values[$column->getName()] = [];
             foreach ($this->tables as $existingTable) {
                 if ($column->getForeignKey()->getTableName() === $existingTable->getName()) {
                     foreach ($existingTable->getDataRows() as $dataRow) {
                         foreach ($dataRow->getDataColumns() as $dataColumn) {
                             if ($dataColumn->getName() === $column->getForeignKey()->getColumnName()) {
                                 $values[$column->getName()][] = $dataColumn->getValue();
                             }
                         }
                     }
                 }
             }
         }
     }
     return $values;
 }
 /**
  * @param \DatabaseExporterImporter\Entity\Table $table
  * @return array
  */
 public function getTableColumns(Table $table)
 {
     $columns = [];
     foreach ($table->getColumns() as $column) {
         $columnExport = ['name' => $column->getName()];
         if (true === $column->isAutoIncrement()) {
             $columnExport['auto_increment'] = true;
         }
         $foreignKey = $column->getForeignKey();
         if (null !== $foreignKey) {
             $columnExport['foreign_key'] = ['table_name' => $foreignKey->getTableName(), 'column_name' => $foreignKey->getColumnName()];
         }
         $columns[] = $columnExport;
     }
     return $columns;
 }