Symfony 2控制台中偶尔出现无效类型错误

Symfony 2控制台中偶尔出现无效类型错误,symfony,doctrine-odm,custom-type,doctrine-mongodb,Symfony,Doctrine Odm,Custom Type,Doctrine Mongodb,我有一个symfony2环境,在这个环境中,我使用了一个自定义数据类型和Doctrine的MongoDB ODM映射。这一切都有效,除了偶尔;当我清除缓存或安装资产时,有时会收到以下错误: [InvalidArgumentException] Invalid type specified "..." 这似乎总是发生在我清除缓存后向控制台发出的下一个命令中,以后的操作都成功了。条令似乎在间歇性地查找它时存在问题,我怀疑这与我在何处注册类型以及何时发生有关,与条令处理映射的时间有关 该类型是作为另

我有一个symfony2环境,在这个环境中,我使用了一个自定义数据类型和Doctrine的MongoDB ODM映射。这一切都有效,除了偶尔;当我清除缓存或安装资产时,有时会收到以下错误:

[InvalidArgumentException]
Invalid type specified "..."
这似乎总是发生在我清除缓存后向控制台发出的下一个命令中,以后的操作都成功了。条令似乎在间歇性地查找它时存在问题,我怀疑这与我在何处注册类型以及何时发生有关,与条令处理映射的时间有关

该类型是作为另一个捆绑包中的
boot()
方法的一部分添加的,该捆绑包可能并不总是包含该类型

  • 这里发生了什么
  • 我是否可以确保更早加载该类型,或者在配置文件中提供它?据我所知,目前没有办法使用MongoDB配置在
    .yml
    文件中指定自定义类型,如ORM所述

    • 为了回答我上面两个问题中的第二个,我似乎已经找到了解决这个问题的方法,但我不太喜欢。它更像是一种黑客行为,而不是一种合适的解决方案

      app/autoload.php
      中,注册注释注册表和驱动程序后,我调用:

      \Doctrine\ODM\MongoDB\Mapping\Types\Type::addType('mytype', 'My\Type\Class');
      
      。。。这似乎可以确保在调用控制台命令时注册类型。

      我找到了一个很好的解决方案

      简单的答案是补充

      \Doctrine\ODM\MongoDB\Mapping\Types\Type::registeredType('mytype', 'My\Type\Class');
      
      MyBundleClass::\uu construct()
      中。这将在缓存发生任何预热之前注册类型


      使用
      Type::registeredType()
      而不是
      Type::addType()
      将避免检查类型是否已注册。在
      Type::addType()的情况下,如果已经添加了异常,则
      将抛出异常。

      暂时标记为已回答,直到有人能够提供更好的解决方案。