/** * Get a copy of the given Doctrine table after making the column changes. * * @param \Illuminate\Database\Schema\Blueprint $blueprint * @param \Doctrine\DBAL\Schema\Table $table * @return \Doctrine\DBAL\Schema\TableDiff */ protected function getTableWithColumnChanges(Blueprint $blueprint, Table $table) { $table = clone $table; foreach ($blueprint->getChangedColumns() as $fluent) { $column = $this->getDoctrineColumnForChange($table, $fluent); // Here we will spin through each fluent column definition and map it to the proper // Doctrine column definitions - which is necessary because Laravel and Doctrine // use some different terminology for various column attributes on the tables. foreach ($fluent->getAttributes() as $key => $value) { if (!is_null($option = $this->mapFluentOptionToDoctrine($key))) { if (method_exists($column, $method = 'set' . ucfirst($option))) { $column->{$method}($this->mapFluentValueToDoctrine($option, $value)); } } } } return $table; }