¿Qué se usa en lugar de ENUM en Doctrine2? smallint? Pensé en usar varchar, o explícitamente definir char, pero esto puede no ser muy efectivo cuando se trata de índices, ¿o estoy equivocado?¿Qué usas en lugar de ENUM en doctrine2?
Respuesta
Suelo trabajar con números enteros asignados a constantes de clase, como
class MyEntity {
const STATUS_INACTIVE = 0;
const STATUS_ACTIVE = 1;
const STATUS_REFUSE = 2;
protected $status = self::STATUS_ACTIVE;
}
que funciona bastante bien y hace que sea aún más fácil de trabajar con lo que llamarían ENUMS en un IDE.
También puede use an enumerable type as described by the documentation, pero eso significa que tendrá que definir un tipo personalizado por columna enum. Eso es mucho trabajo sin ningún beneficio real.
Puede que también desee saber why you shouldn't really use enums.
un problema: al tratar con valores fuera de 'MyEntity', tienes que volver a codificar las constantes o usar' 0, 1, 2'. es decir '$ entity-> setStatus (STATUS_ACTIVE); // no funciona fuera de MyEntity' – Dennis
@Dennis el uso sería '$ entity-> setStatus (MyEntity :: STATUS_ACTIVE);' – Ocramius
¿Esto no combina las clases que usan 'MyEntity' con la implementación específica? ¿Sería mejor definir estas constantes en un 'MyEntityInterface' que luego implementaría' MyEntity'? – Alex
Postgres, Symfony, ORM, la doctrina ...
- Postgress Definir nueva enumeración tipo (pgAdmin)
CREATE TYPE new_enum AS ENUM ('triste', 'ok ', 'contento');
- En Entidad
@ORM \ Columna (name = "nombre", type = "string", ColumnDefinition = "new_enum", anulable = true)
- En config.yml
mapping_types:
new_enum: cadena
# Doctrine Configuration
doctrine:
dbal:
driver: "%database_driver%"
host: "%database_host%"
port: "%database_port%"
dbname: "%database_name%"
user: "%database_user%"
password: "%database_password%"
charset: UTF8
mapping_types:
new_enum: string # <=======
- 1. ¿Qué red de seguridad usas en Perl?
- 2. ¿Qué convenciones de nomenclatura usas en C#?
- 3. Plugins JIRA: ¿Qué usas?
- 4. ¿Qué usas para escribir Go
- 5. PHP: ¿Qué usas para escribirlo?
- 6. Imprimir texto en lugar de valor de C enum
- 7. ¿Qué técnica de protección de copia usas?
- 8. Colección personalizada en Doctrine2
- 9. DataStateBehavior para Enum en lugar de bool? ¿Cuerda?
- 10. ¿Qué método usas para implementar aplicaciones ASP.Net en la naturaleza?
- 11. ¿Qué conjunto de sonidos de construcción usas?
- 12. ¿Qué refactorizaciones de C++ usas en la práctica?
- 13. ¿Por qué debería hacer el tipo subyacente de un Enum Int32 en lugar de un byte?
- 14. ¿Qué herramientas de refactorización usas para .NET?
- 15. ¿Qué tipo de diagramas UML usas?
- 16. ¿Qué biblioteca de Programación/Algoritmo Genético usas?
- 17. ¿Qué usas para crear diagramas de flujo?
- 18. ¿Enum enum en JNI?
- 19. ¿Qué IDE/Editor usas para Ruby en Linux?
- 20. ¿Qué plugin CSS/JS/HTML/XML usas en Eclipse?
- 21. ¿Qué biblioteca usas para los cálculos matriciales en CUDA?
- 22. ¿Qué herramientas usas para depurar HTML/JS en tu navegador?
- 23. ¿Qué herramientas usas para desarrollar aplicaciones C++ en Linux?
- 24. ¿Qué IDE/editor usas para Ruby en Windows?
- 25. ¿Cuándo usas 'self' en Python?
- 26. ¿Cómo (y por qué) usas contrastes?
- 27. ¿Qué editor usas para la codificación OpenLaszlo?
- 28. ¿Qué herramientas usas para soportar XCode?
- 29. ¿Qué complementos usas junto con Eclipse CDT?
- 30. ¿Qué estilo usas para crear una "clase"?
creo que es necesario este libro de cocina (tomado de la documentación oficial Doctrina): http://www.doctrine-project.org/docs /orm/2.1/en/cookbook/mysql-enums.html Es exactamente su problema y ofrece 2 soluciones. Simplemente elige el tuyo. – Nanocom