コード例 #1
0
 /**
  * @param array $columnData
  * @return $this
  */
 private function addAutoIncrement(array $columnData)
 {
     if (true === array_key_exists('auto_increment', $columnData)) {
         $this->column->setAutoIncrement((bool) $columnData['auto_increment']);
     }
     return $this;
 }
 /**
  * @inheritdoc
  */
 protected function setColumns()
 {
     $statement = $this->connection->prepare('DESC ' . $this->table->getName());
     $statement->setFetchMode(\PDO::FETCH_ASSOC);
     $statement->execute();
     foreach ($statement as $item) {
         $column = new Column($item['Field']);
         $this->columns[] = $column->setAutoIncrement('auto_increment' === $item['Extra']);
     }
     return $this;
 }
 public function test()
 {
     $table = new Table('table_name');
     $column1 = new Column('id');
     $column1->setAutoIncrement(true);
     $column2 = new Column('name');
     $table->addColumn($column1)->addColumn($column2);
     $subject = new AutoIncrementTableColumnFinder();
     static::assertSame($column1->getName(), $subject->getAutoIncrementColumn($table)->getName());
     static::assertNull($subject->getAutoIncrementColumn(new Table('test_table')));
 }
 /**
  * @throws \RuntimeException
  * @return \DatabaseExporterImporter\Entity\Column[]
  */
 public function getDependentColumns()
 {
     if (null === $this->parentColumn->getTable()) {
         throw new \RuntimeException('The parent column does not contain a parent table.');
     }
     $columns = [];
     foreach ($this->tables as $table) {
         foreach ($table->getColumns() as $column) {
             if (null !== $column->getForeignKey() && $column->getForeignKey()->getColumnName() === $this->parentColumn->getName() && $column->getForeignKey()->getTableName() === $this->parentColumn->getTable()->getName()) {
                 $columns[] = $column;
             }
         }
     }
     return $columns;
 }
コード例 #5
0
 public function test()
 {
     $foreignKey = new ForeignKey();
     $foreignKey->setTableName('table1')->setColumnName('column1');
     $subject = new Column('name');
     $subject->setForeignKey($foreignKey)->setTable(new Table('test_table'));
     static::assertSame('name', $subject->getName());
     static::assertInstanceOf(ForeignKey::class, $subject->getForeignKey());
     $subject->removeForeignKey();
     static::assertSame(null, $subject->getForeignKey());
     static::assertFalse($subject->isAutoIncrement());
     $subject->setAutoIncrement(true);
     static::assertTrue($subject->isAutoIncrement());
     static::assertSame('test_table', $subject->getTable()->getName());
 }