Doctrine2: Type x already exists

2019-07-04 03:54发布

问题:

I have a problem with the Doctrine API.

I want to add a new Doctrine Type. I followed this documentation to create the class, and I have added the type in my custom driver.

Type::addType("custom", "Namespace\NameBundle\Types\CustomType");
$this->registerDoctrineTypeMapping("CustomType", "custom");

My problem append when I execute php app/console cache:clear.

[Doctrine\DBAL\DBALException]
Type custom already exists.

After few searches, I have found in Doctrine\DBAL\Types\Type::addType(…) throw an exception if the type is knew… I don't understand why this error is throwing.

回答1:

I have found my problem !

I don't know why, but my custom type is loading again and again.

To resolve this problem, adding this code like checking.

if (!Type::hasType("custom")) {
    Type::addType("custom", "Namespace\NameBundle\Types\CustomType");
    $this->registerDoctrineTypeMapping("CustomType", "custom");
}

It works !