Enums 如何正确处理枚举?
在一个应用程序中,我有一个例子。鉴别器列是一个Enums 如何正确处理枚举?,enums,doctrine-orm,doctrine,migration,symfony4,Enums,Doctrine Orm,Doctrine,Migration,Symfony4,在一个应用程序中,我有一个例子。鉴别器列是一个枚举: /** * Foo * * @ORM\Table(name="foos", ...) * @ORM\Entity * @ORM\InheritanceType("JOINED") * @ORM\DiscriminatorColumn(name="`type`", type="string", columnDefinition="ENUM('bar', 'buz')") * @ORM\DiscriminatorMap({ *
枚举
:
/**
* Foo
*
* @ORM\Table(name="foos", ...)
* @ORM\Entity
* @ORM\InheritanceType("JOINED")
* @ORM\DiscriminatorColumn(name="`type`", type="string", columnDefinition="ENUM('bar', 'buz')")
* @ORM\DiscriminatorMap({
* "bar" = "Bar",
* "buz" = "Buz"
* })
*/
abstract class Foo
{
...
}
条令如预期(首先)起作用。条令:migrations:diff
命令为表和关系创建迁移,并将鉴别器列正确定义为ENUM
然后我执行迁移(原则:迁移:迁移
)。这个模式看起来不错。但是:
当我再次执行diff
命令(并且不希望有新的迁移)时,会生成一个新的迁移:
final class Version20180619205625 extends AbstractMigration
{
public function up(Schema $schema) : void
{
$this->addSql('ALTER TABLE foos CHANGE type `type` ENUM(\'bar\', \'buz\')');
}
public function down(Schema $schema) : void
{
$this->addSql('ALTER TABLE tasks CHANGE `type` type VARCHAR(255) DEFAULT NULL COLLATE utf8mb4_unicode_ci');
}
}
好吧,我执行它。然后重试diff
命令。并再次生成相同的迁移。。。因此,条令似乎“思考”,专栏仍然是VARCHAR
我在这里展示了一个继承鉴别器的例子。但实际上,不管列是否是鉴别器,每个ENUM
列的行为都是相同的
如何解决这个问题?有没有办法让条令正确处理ENUM
列?