<tfoot id='iIsBB'></tfoot>
        • <bdo id='iIsBB'></bdo><ul id='iIsBB'></ul>
        <legend id='iIsBB'><style id='iIsBB'><dir id='iIsBB'><q id='iIsBB'></q></dir></style></legend>

      1. <small id='iIsBB'></small><noframes id='iIsBB'>

        <i id='iIsBB'><tr id='iIsBB'><dt id='iIsBB'><q id='iIsBB'><span id='iIsBB'><b id='iIsBB'><form id='iIsBB'><ins id='iIsBB'></ins><ul id='iIsBB'></ul><sub id='iIsBB'></sub></form><legend id='iIsBB'></legend><bdo id='iIsBB'><pre id='iIsBB'><center id='iIsBB'></center></pre></bdo></b><th id='iIsBB'></th></span></q></dt></tr></i><div id='iIsBB'><tfoot id='iIsBB'></tfoot><dl id='iIsBB'><fieldset id='iIsBB'></fieldset></dl></div>

        在 Symfony4 中注册自定义 Doctrine 类型

        时间:2024-08-15
      2. <tfoot id='OQCKM'></tfoot>

        <legend id='OQCKM'><style id='OQCKM'><dir id='OQCKM'><q id='OQCKM'></q></dir></style></legend>

                <tbody id='OQCKM'></tbody>
            1. <i id='OQCKM'><tr id='OQCKM'><dt id='OQCKM'><q id='OQCKM'><span id='OQCKM'><b id='OQCKM'><form id='OQCKM'><ins id='OQCKM'></ins><ul id='OQCKM'></ul><sub id='OQCKM'></sub></form><legend id='OQCKM'></legend><bdo id='OQCKM'><pre id='OQCKM'><center id='OQCKM'></center></pre></bdo></b><th id='OQCKM'></th></span></q></dt></tr></i><div id='OQCKM'><tfoot id='OQCKM'></tfoot><dl id='OQCKM'><fieldset id='OQCKM'></fieldset></dl></div>
                <bdo id='OQCKM'></bdo><ul id='OQCKM'></ul>

              • <small id='OQCKM'></small><noframes id='OQCKM'>

                • 本文介绍了在 Symfony4 中注册自定义 Doctrine 类型的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  So I have this custom Doctrine type

                  namespace AppDoctrineTypes;

                  use DoctrineDBALPlatformsAbstractPlatform; use DoctrineDBALTypesTextType;

                  class MyType extends TextType
                  {
                     private $prefix='';
                  
                     public function getName()
                     {
                        return 'my_type';
                     }
                     public function setPrefix(string $prefix)
                     {
                        $this->prefix=$prefix;
                     }
                  }
                  

                  I registerd in in the config/packages/doctrine.yml:

                  doctrine:
                      dbal:
                          types:
                              my_type: AppDoctrineTypesMyType
                  

                  Then in Kernel boot() I'm trying to add some parameters to this type:

                  public function boot() {
                     parent::boot();
                  
                     $myType=Type::getType('my_type');
                     $myType->setPrefix('abc');
                  }
                  

                  This works perfectly the first time I run the app. The prefix is set for the type and can be used through the whole app. However, the second time I get an Exception:

                  Unknown column type "encrypted_text" requested. Any Doctrine type that you use has to be registered with DoctrineDBALTypesType::addType(). You can get a list of all the known types with DoctrineDBALTypesType::getTypesMap(). If this error occurs during database introspection then you might have forgotten to register all database types for a Doctrine Type. Use AbstractPlatform#registerDoctrineTypeMapping() or have your custom types implement Type#getMappedDatabaseTypes(). If the type name is empty you might have a problem with the cache or forgot some mapping information.

                  I then changed boot() to :

                      public function boot() {
                         parent::boot();
                         if (!Type::hasType('my_type')) {
                             Type::addType('my_type', 'AppDoctrineTypesMyType');
                         }
                         $myType=Type::getType('my_type');
                         $myType->setPrefix('abc');
                     }
                  

                  Now the exception is gone, but the prefix is not set. I know the exceptions gives me information about what to do but I really don't know where to start.

                  Can anyone point me in the right direction?

                  解决方案

                  For now I fixed it by removing it from config/packages/doctrine.yml so it's not registered there anymore. In Kernel I can now load it:

                      public function boot() {
                         parent::boot();
                         if (!Type::hasType('my_type')) {
                             Type::addType('my_type', 'AppDoctrineTypesMyType');
                         }
                         $myType = Type::getType('my_type');
                         $myType->setPrefix('abc');
                     }
                  

                  I still can't really understand why this works before building the cache but not once the cache is build. But well, I can continue now.

                  If someone has a better answer, I'd be more than happy to accept it.

                  这篇关于在 Symfony4 中注册自定义 Doctrine 类型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  上一篇:在 symfony 中执行自定义 SQL 下一篇:Symfony 4 Doctrine 不能从控制台工作 [2002] 没有这样的文件或目录

                  相关文章

                  1. <legend id='ufXsf'><style id='ufXsf'><dir id='ufXsf'><q id='ufXsf'></q></dir></style></legend>

                  2. <tfoot id='ufXsf'></tfoot>

                  3. <small id='ufXsf'></small><noframes id='ufXsf'>

                  4. <i id='ufXsf'><tr id='ufXsf'><dt id='ufXsf'><q id='ufXsf'><span id='ufXsf'><b id='ufXsf'><form id='ufXsf'><ins id='ufXsf'></ins><ul id='ufXsf'></ul><sub id='ufXsf'></sub></form><legend id='ufXsf'></legend><bdo id='ufXsf'><pre id='ufXsf'><center id='ufXsf'></center></pre></bdo></b><th id='ufXsf'></th></span></q></dt></tr></i><div id='ufXsf'><tfoot id='ufXsf'></tfoot><dl id='ufXsf'><fieldset id='ufXsf'></fieldset></dl></div>
                      <bdo id='ufXsf'></bdo><ul id='ufXsf'></ul>