12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- <?php
- namespace Illuminate\Database\Schema\Grammars;
- use Illuminate\Support\Fluent;
- use Doctrine\DBAL\Schema\Column;
- use Doctrine\DBAL\Schema\TableDiff;
- use Illuminate\Database\Connection;
- use Illuminate\Database\Schema\Blueprint;
- use Doctrine\DBAL\Schema\AbstractSchemaManager as SchemaManager;
- class RenameColumn
- {
- /**
- * Compile a rename column command.
- *
- * @param \Illuminate\Database\Schema\Grammars\Grammar $grammar
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $command
- * @param \Illuminate\Database\Connection $connection
- * @return array
- */
- public static function compile(Grammar $grammar, Blueprint $blueprint, Fluent $command, Connection $connection)
- {
- $column = $connection->getDoctrineColumn(
- $grammar->getTablePrefix().$blueprint->getTable(), $command->from
- );
- $schema = $connection->getDoctrineSchemaManager();
- return (array) $schema->getDatabasePlatform()->getAlterTableSQL(static::getRenamedDiff(
- $grammar, $blueprint, $command, $column, $schema
- ));
- }
- /**
- * Get a new column instance with the new column name.
- *
- * @param \Illuminate\Database\Schema\Grammars\Grammar $grammar
- * @param \Illuminate\Database\Schema\Blueprint $blueprint
- * @param \Illuminate\Support\Fluent $command
- * @param \Doctrine\DBAL\Schema\Column $column
- * @param \Doctrine\DBAL\Schema\AbstractSchemaManager $schema
- * @return \Doctrine\DBAL\Schema\TableDiff
- */
- protected static function getRenamedDiff(Grammar $grammar, Blueprint $blueprint, Fluent $command, Column $column, SchemaManager $schema)
- {
- return static::setRenamedColumns(
- $grammar->getDoctrineTableDiff($blueprint, $schema), $command, $column
- );
- }
- /**
- * Set the renamed columns on the table diff.
- *
- * @param \Doctrine\DBAL\Schema\TableDiff $tableDiff
- * @param \Illuminate\Support\Fluent $command
- * @param \Doctrine\DBAL\Schema\Column $column
- * @return \Doctrine\DBAL\Schema\TableDiff
- */
- protected static function setRenamedColumns(TableDiff $tableDiff, Fluent $command, Column $column)
- {
- $tableDiff->renamedColumns = [
- $command->from => new Column($command->to, $column->getType(), $column->toArray()),
- ];
- return $tableDiff;
- }
- }
|