9
votes

Ajouter une nouvelle colonne Enum pendant la migration

Quelqu'un peut-il me dire comment puis-je ajouter une nouvelle colonne de type Enum à mon schéma afin de mettre en œuvre une migration de doctrine?


0 commentaires

7 Réponses :


0
votes

Modifiez votre schéma et ne construisez pas encore le modèle. Exécutez Doctrine Schema Difff puis une classe de migration sera générée pour vous. Enfin, vous pouvez reconstruire vos modèles / formulaires / filtres


0 commentaires

20
votes
  1. modifier votre schéma

  2. exécuté ./ symfony doc: génération-migrations-diff

    Ceci générera un ou plusieurs fichiers en lib / migrations / doctrine /

  3. exécuté ./ symfony doc: migrer

    Ceci appliquera les migrations générées vers la base de données

  4. exécution ./ symfony doc: Construire --Toutes-classes

    Ceci fonctionne pour symfony> = 1,3 / 1.4 et reconstruire toutes les classes de formulaire / filtres / modèles en fonction du schéma modifié

    N'oubliez pas que la migration est générée comparer le nouveau schema.yml vers les classes de modèle actuelles, donc si vous reconstruisez vos classes avant d'exécuter Generate-Migrations-Diff.


0 commentaires

1
votes

Raccourci:

symfony doctrine:build --all-classes --and-migrate


1 commentaires

Besoin de faire ./Symfony Doc: Générez-Migrations-DIFF D'abord, je pense.



4
votes

Si vous devez écrire vous-même le script de migration, voici un exemple de la syntaxe - je n'ai pas trouvé de spécification appropriée pour la syntaxe nulle part. XXX


0 commentaires

-1
votes
Model:  
  column:  
    type: enum  
    values: [one, two, three]  

(optional:)  
    notnull: false  
    default: one #or two or three  

0 commentaires

0
votes

Le moyen le plus simple de l'exécuter à partir d'une doctrine migration consiste à enregistrer une nouvelle cartographie. Ensuite, vous pouvez appliquer des valeurs à l'intérieur de votre entité si nécessaire. ( Doctrine MySQL Enums ) xxx


0 commentaires

0
votes

J'ai eu le même problème et j'ai trouvé une solution dans définir ce drapeau dans projetryconfiguration.class.php code> xxx pré>

après que j'ai utilisé cette méthode appelant et obtenez un Native MySQL Enum: P>

class MyMigration extends Doctrine_Migration_Base {
    public function up() {
        $this->changeColumn(self::tableName, 'columName', 'enum', null,
            array(
                'fixed' => true,
                'length' => null,
                'notnull' => true,
                'values' => array(
                    0 => 'Option 1',
                    1 => 'Option 2'
                )
            )
        );
}


0 commentaires