¿Alguien puede decirme cómo puedo agregar una nueva columna de tipo enumeración a mi esquema para implementar una migración de Doctrine?Agregar nueva columna enum durante la migración
Respuesta
Modifique su esquema y no construya aún el modelo. Ejecute doctrine schema diff y luego se generará una clase de migración para usted. Por último se puede reconstruir sus modelos/formas/filtros
modificar su esquema
plazo
./symfony doc:generate-migrations-diff
esto va a generar uno o más archivos en lib/migraciones/doctrina/
ejecutar
./symfony doc:migrate
esto aplicará las migraciones generadas a la base de datos
plazo
./symfony doc:build --all-classes
esto funciona para Symfony> = 1.3/1.4 y reconstruirá todos/filtros/clases del modelo de formulario de acuerdo con el esquema modificado
recordar que se genera la migración comparando la nuevo schema.yml para las clases de modelo actuales, por lo que si reconstruyes tus clases antes de ejecutar generate-migrations-diff, estás jodido.
Atajo:
symfony doctrine:build --all-classes --and-migrate
En caso de tener que escribir el script de migración de ti mismo, aquí es un ejemplo de la sintaxis - No he encontrado una especificación adecuada para la sintaxis en cualquier lugar.
$this->addColumn('tablename', 'column_name', 'enum', false,
array('fixed' => 1,
'values' =>
array(0 => 'auto',
1 => 'manual',
2 => 'unknown'),
'default' => 'unknown',
'notnull' => true,
'length' => NULL,
));
Model:
column:
type: enum
values: [one, two, three]
(optional:)
notnull: false
default: one #or two or three
La forma más sencilla de ejecutar desde una migración de doctrina es el registro de una nueva asignación. Entonces puede aplicar valores dentro de su entidad si es necesario. (Doctrine MySQL Enums)
public function up(Schema $schema)
{
$this->connection->getDatabasePlatform()->registerDoctrineTypeMapping('enum', 'string');
...
}
que tenía el mismo problema y encontré una solución en conjunto esta bandera en ProjectConfiguration.class.php
public function configureDoctrine(Doctrine_Manager $manager) {
$manager->setAttribute(Doctrine_Core::ATTR_USE_NATIVE_ENUM, true);
}
Después de eso utilicé esta llamada al método y obtener una enumeración nativo de MySQL:
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'
)
)
);
}
- 1. Agregar columna Id en una migración
- 2. jqGrid agregar nueva columna
- 3. cómo establecer valor predeterminado de la columna de rieles durante la creación de la migración
- 4. Rails no me permitirá cambiar los registros durante la migración
- 5. La relación ya existe durante la migración de rake
- 6. Agregar una nueva columna con los datos de una unión
- 7. ¿Cómo agregar una nueva columna a un archivo CSV?
- 8. ¿Cómo agregar una nueva columna en una vista en sqlite?
- 9. cómo agregar una nueva columna a una hoja existente
- 10. rieles de migración para la columna de cambio
- 11. rake db: migrate no detecta nueva migración?
- 12. Agregar una columna a una tabla existente en una migración de Rails
- 13. Migraciones de Entity Framework: Timeout SqlException durante la migración
- 14. En una migración de Rails (MySQL), ¿puede especificar qué posición debería tener una nueva columna?
- 15. addColumn posición de migración yü
- 16. SQL Server Nombre de columna inválido después de agregar una nueva columna
- 17. Servidor SQL: ¿cómo agregar una nueva columna de identidad y llenar una columna con identificadores?
- 18. Consulta SQL para agregar una nueva columna después de una columna existente en SQL Server 2005
- 19. Agregar enum al cuadro combinado
- 20. ¿Cómo agregar una nueva columna en una tabla después de la 2ª o 3ª columna en la tabla usando postgres?
- 21. rails3 default_scope, y valor de columna predeterminado en la migración
- 22. iText agregar nueva página
- 23. IZQUIERDA UNIR COMO NUEVA columna?
- 24. ¿Valor predeterminado de migración sur desde otra columna?
- 25. ¿Insertar una nueva columna en la tabla en sqlite?
- 26. Cómo agregar una nueva columna con valor a la tabla de datos existente?
- 27. cómo agregar una nueva columna a la clave primaria compuesta existente
- 28. ¿La mejor manera de agregar una nueva columna con un valor inicial (pero no predeterminado)?
- 29. Campos de migración en JDO
- 30. Alterar la columna, agregar la restricción predeterminada
tiene que hacer ./symfony doc: generate-migrations-diff primero, creo. – Populus