public function generateAlteredFields()
    {
        /* @var $oldField Field */
        /* @var $newField Field */
        foreach ($this->keptModelKeys as $modelName) {
            $oldFieldKeys = $this->oldFieldKeys[$modelName];
            $newFieldKeys = $this->newFieldKeys[$modelName];

            $keptFieldKeys = array_intersect($oldFieldKeys, $newFieldKeys);

            $oldModelName = $this->getOldModelName($modelName);

            foreach ($keptFieldKeys as $keptField) {
                $oldFieldName = $this->getOldFieldName($modelName, $keptField);
                $oldField = $this->oldRegistry->getModel($oldModelName)
                    ->getMeta()
                    ->getField($oldFieldName);

                $meta = $this->newRegistry->getModel(
                    $modelName
                )->getMeta();
                $newField = $meta->getField($keptField);

                $oldDec = $this->deepDeconstruct($oldField);
                $newDec = $this->deepDeconstruct($newField);

                if ($oldDec !== $newDec) {
                    $bothM2M = ($newField instanceof ManyToManyField &&
                        $oldField instanceof ManyToManyField);
                    $neitherM2M = (!$newField instanceof ManyToManyField &&
                        !$oldField instanceof ManyToManyField);

                    // Either both fields are m2m or neither is
                    if ($bothM2M || $neitherM2M) {
                        $preserveDefault = true;

                        if ($oldField->isNull() && !$newField->isNull() &&
                            !$newField->hasDefault() &&
                            !$newField instanceof ManyToManyField
                        ) {
                            $field = $newField->deepClone();
                            $default = MigrationQuestion::askNotNullAlteration(
                                $this->asker,
                                $modelName,
                                $keptField
                            );

                            if (NOT_PROVIDED !== $default) {
                                $field->default = $default;
                                $preserveDefault = false;
                            }
                        } else {
                            $field = $newField;
                        }

                        $this->addOperation(
                            $meta->getAppName(),
                            AlterField::createObject(
                                [
                                    'modelName' => $modelName,
                                    'name' => $keptField,
                                    'field' => $field,
                                    'preserveDefault' => $preserveDefault,
                                ]
                            )
                        );
                    } else {
                        // We cannot alter between m2m and concrete fields
                        $this->findRemovedFields($modelName, $keptField);
                        $this->findAddedFields($modelName, $keptField);
                    }
                }
            }
        }
    }
public function generateAlteredFields()
    {
        /* @var $oldField Field */
        /* @var $newField Field */
        foreach ($this->keptModelKeys as $modelName) {
            $oldFieldKeys = $this->oldFieldKeys[$modelName];
            $newFieldKeys = $this->newFieldKeys[$modelName];

            $keptFieldKeys = array_intersect($oldFieldKeys, $newFieldKeys);

            $oldModelName = $this->getOldModelName($modelName);

            foreach ($keptFieldKeys as $keptField) {
                $oldFieldName = $this->getOldFieldName($modelName, $keptField);
                $oldField = $this->oldRegistry->getModel($oldModelName)
                    ->getMeta()
                    ->getField($oldFieldName);

                $meta = $this->newRegistry->getModel(
                    $modelName
                )->getMeta();
                $newField = $meta->getField($keptField);

                $oldDec = $this->deepDeconstruct($oldField);
                $newDec = $this->deepDeconstruct($newField);

                if ($oldDec !== $newDec) {
                    $bothM2M = ($newField instanceof ManyToManyField &&
                        $oldField instanceof ManyToManyField);
                    $neitherM2M = (!$newField instanceof ManyToManyField &&
                        !$oldField instanceof ManyToManyField);

                    // Either both fields are m2m or neither is
                    if ($bothM2M || $neitherM2M) {
                        $preserveDefault = true;

                        if ($oldField->isNull() && !$newField->isNull() &&
                            !$newField->hasDefault() &&
                            !$newField instanceof ManyToManyField
                        ) {
                            $field = $newField->deepClone();
                            $default = MigrationQuestion::askNotNullAlteration(
                                $this->asker,
                                $modelName,
                                $keptField
                            );

                            if (NOT_PROVIDED !== $default) {
                                $field->default = $default;
                                $preserveDefault = false;
                            }
                        } else {
                            $field = $newField;
                        }

                        $this->addOperation(
                            $meta->getAppName(),
                            AlterField::createObject(
                                [
                                    'modelName' => $modelName,
                                    'name' => $keptField,
                                    'field' => $field,
                                    'preserveDefault' => $preserveDefault,
                                ]
                            )
                        );
                    } else {
                        // We cannot alter between m2m and concrete fields
                        $this->findRemovedFields($modelName, $keptField);
                        $this->findAddedFields($modelName, $keptField);
                    }
                }
            }
        }
    }
public function generateAlteredFields ( ) { /* @var $oldField Field */ /* @var $newField Field */ foreach ( $ this -> keptModelKeys as $ modelName ) { $ oldFieldKeys = $ this -> oldFieldKeys [ $ modelName ] ; $ newFieldKeys = $ this -> newFieldKeys [ $ modelName ] ; $ keptFieldKeys = array_intersect ( $ oldFieldKeys , $ newFieldKeys ) ; $ oldModelName = $ this -> getOldModelName ( $ modelName ) ; foreach ( $ keptFieldKeys as $ keptField ) { $ oldFieldName = $ this -> getOldFieldName ( $ modelName , $ keptField ) ; $ oldField = $ this -> oldRegistry -> getModel ( $ oldModelName ) -> getMeta ( ) -> getField ( $ oldFieldName ) ; $ meta = $ this -> newRegistry -> getModel ( $ modelName ) -> getMeta ( ) ; $ newField = $ meta -> getField ( $ keptField ) ; $ oldDec = $ this -> deepDeconstruct ( $ oldField ) ; $ newDec = $ this -> deepDeconstruct ( $ newField ) ; if ( $ oldDec !== $ newDec ) { $ bothM2M = ( $ newField instanceof ManyToManyField && $ oldField instanceof ManyToManyField ) ; $ neitherM2M = ( ! $ newField instanceof ManyToManyField && ! $ oldField instanceof ManyToManyField ) ; // Either both fields are m2m or neither is if ( $ bothM2M || $ neitherM2M ) { $ preserveDefault = true ; if ( $ oldField -> isNull ( ) && ! $ newField -> isNull ( ) && ! $ newField -> hasDefault ( ) && ! $ newField instanceof ManyToManyField ) { $ field = $ newField -> deepClone ( ) ; $ default = MigrationQuestion :: askNotNullAlteration ( $ this -> asker , $ modelName , $ keptField ) ; if ( NOT_PROVIDED !== $ default ) { $ field -> default = $ default ; $ preserveDefault = false ; } } else { $ field = $ newField ; } $ this -> addOperation ( $ meta -> getAppName ( ) , AlterField :: createObject ( [ 'modelName' => $ modelName , 'name' => $ keptField , 'field' => $ field , 'preserveDefault' => $ preserveDefault , ] ) ) ; } else { // We cannot alter between m2m and concrete fields $ this -> findRemovedFields ( $ modelName , $ keptField ) ; $ this -> findAddedFields ( $ modelName , $ keptField ) ; } } } } }
Fields that have been altered.

@since  1.1.0

@author Eddilbert Macharia (http://eddmash.com) <edd.cowan@gmail.com>
Fields that have been altered .