Ignore a Doctrine2 Entity when running schema-manager update

后端 未结 5 1768
天涯浪人
天涯浪人 2020-12-06 17:51

I\'ve got a Doctrine Entity defined that maps to a View in my database. All works fine, the Entity relations work fine as expected.

Problem now is that when running

5条回答
  •  夕颜
    夕颜 (楼主)
    2020-12-06 18:11

    Quite old one but there is also worth nothing solution using Doctrine2: postGenerateSchema event listener - for me it's better than overriding Doctrine classes:

    namespace AppBundle\EventListener;
    
    use Doctrine\ORM\Tools\Event\GenerateSchemaEventArgs;
    
    /**
     * IgnoreTablesListener class
     */
    class IgnoreTablesListener
    {
        private $ignoredTables = [
            'table_name_to_ignore',
        ];
    
        public function postGenerateSchema(GenerateSchemaEventArgs $args)
        {
            $schema = $args->getSchema();
    
            $tableNames = $schema->getTableNames();
            foreach ($tableNames as $tableName) {
    
                if (in_array($tableName, $this->ignoredTables)) {
                    // remove table from schema
                    $schema->dropTable($tableName);
                }
    
            }
        }
    
    }
    

    Also register listener:

    ignore_tables_listener:
        class: AppBundle\EventListener\IgnoreTablesListener
        tags:
            - {name: doctrine.event_listener, event: postGenerateSchema }
    

    No extra hooks is necessary.

提交回复
热议问题