Qu'utilisez-vous à la place d'ENUM dans Doctrine2? smallint? J'ai pensé à utiliser varchar, ou à définir explicitement char, mais cela peut ne pas être très efficace en ce qui concerne les index, ou je me trompe?
Je travaille généralement avec des entiers mappés à des constantes de classe, comme
class MyEntity {
const STATUS_INACTIVE = 0;
const STATUS_ACTIVE = 1;
const STATUS_REFUSE = 2;
protected $status = self::STATUS_ACTIVE;
}
Cela fonctionne très bien et rend encore plus facile de travailler avec ce que vous appelleriez ENUMS dans un IDE.
Vous pouvez également tiliser un type énumérable comme décrit dans la documentation , mais cela signifie que vous devrez définir un type personnalisé par colonne d'énumération. C'est beaucoup de travail sans réel avantage.
Vous pouvez également vouloir savoir pourquoi vous ne devriez pas vraiment utiliser les énumérations .
Postgres, symfony, orm, doctrine ...
CREATE TYPE new_enum AS ENUM ('triste', 'ok', 'heureux');
@ORM\Column (name = "name", type = "string", columnDefinition = "new_enum", nullable = true)
mapping_types:
Nouveau_enum: chaîne
# 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 # <=======