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? P>
7 Réponses :
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 p>
modifier votre schéma p> li>
exécuté Ceci générera un ou plusieurs fichiers en lib / migrations / doctrine / p>
li>
exécuté Ceci appliquera les migrations générées vers la base de données p>
li>
exécution Ceci fonctionne pour symfony> = 1,3 / 1.4 et reconstruire toutes les classes de formulaire / filtres / modèles en fonction du schéma modifié p>
li>
ol>
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. P> ./ symfony doc: génération-migrations-diff code> p> p>
./ symfony doc: migrer code> p>
./ symfony doc: Construire --Toutes-classes Code> P>
Raccourci:
symfony doctrine:build --all-classes --and-migrate
Besoin de faire ./Symfony Doc: Générez-Migrations-DIFF D'abord, je pense.
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.
Model: column: type: enum values: [one, two, three] (optional:) notnull: false default: one #or two or three
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 )
J'ai eu le même problème et j'ai trouvé une solution dans définir ce drapeau dans après que j'ai utilisé cette méthode appelant et obtenez un Native MySQL Enum: P> projetryconfiguration.class.php code>
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'
)
)
);
}