/** * @param $columnName * @param $type * @param array $options * @return $this */ public function addColumn($columnName, $type = null, $options = []) { if (!$columnName instanceof Column) { $column = new Column(); $column->setName($columnName)->setDataType($type); if (!empty($options)) { $column->setOptions($options); if (isset($options['primaryKey'])) { $this->addPrimaryKey($column); } if (isset($options['foreignKey']) && isset($options['referencedTable']) && isset($options['referencedColumns'])) { $this->addForeignKey($column, $options['referencedTable'], $options['referencedColumns']); } } } else { $column = $columnName; } $this->setColumn($column); return $this; }