|string $attrs The attributes for the column or the type name. * @return $this */ public function addColumn(string $name, $attrs); /** * Get column data in the table. * * @param string $name The column name. * @return array|null Column data or null. */ public function getColumn(string $name): ?array; /** * Returns true if a column exists in the schema. * * @param string $name Column name. * @return bool */ public function hasColumn(string $name): bool; /** * Remove a column from the table schema. * * If the column is not defined in the table, no error will be raised. * * @param string $name The name of the column * @return $this */ public function removeColumn(string $name); /** * Get the column names in the table. * * @return array */ public function columns(): array; /** * Returns column type or null if a column does not exist. * * @param string $name The column to get the type of. * @return string|null */ public function getColumnType(string $name): ?string; /** * Sets the type of a column. * * @param string $name The column to set the type of. * @param string $type The type to set the column to. * @return $this */ public function setColumnType(string $name, string $type); /** * Returns the base type name for the provided column. * This represent the database type a more complex class is * based upon. * * @param string $column The column name to get the base type from * @return string|null The base type name */ public function baseColumnType(string $column): ?string; /** * Check whether a field is nullable * * Missing columns are nullable. * * @param string $name The column to get the type of. * @return bool Whether the field is nullable. */ public function isNullable(string $name): bool; /** * Returns an array where the keys are the column names in the schema * and the values the database type they have. * * @return array */ public function typeMap(): array; /** * Get a hash of columns and their default values. * * @return array */ public function defaultValues(): array; /** * Sets the options for a table. * * Table options allow you to set platform specific table level options. * For example the engine type in MySQL. * * @param array $options The options to set, or null to read options. * @return $this */ public function setOptions(array $options); /** * Gets the options for a table. * * Table options allow you to set platform specific table level options. * For example the engine type in MySQL. * * @return array An array of options. */ public function getOptions(): array; }