Você pode criar índices de banco de dados usando o atributo #[ORM\Index(fields: ['fieldName'] no arquivo de entidade e o Doctrine fará o resto para gerenciar o índice para você, mas Não vou falar sobre isso.
À medida que seu projeto cresce ou requer requisitos específicos, pode ser necessário usar tipos de índice personalizados como GIST, GIN, BRIN, etc (https://www.postgresql.org/docs/current/indexes-types.html). O Doctrine não suporta a criação de tipos de índice específicos do fornecedor de banco de dados prontos para uso (ref).Para resolver esse problema, você pode executar o CREATE INDEX DDL diretamente no banco de dados ou gravar o DDL no arquivo de migração de doutrina. A última opção oferece a vantagem de ser mais fácil implantar ou reverter as alterações.
Não importa qual método você use para criar o índice personalizado, o Doctrine sempre marcará esses índices personalizados como índices não mapeados, portanto, se você executar doutrina:schema:validate você receberá um erro informando que se seu banco de dados não estiver sincronizado, o mesmo ao executar doutrina:schema:update --dump-sql ou doutrina:migrations:diff ele mostrará a instrução DROP INDEX ... para remover os índices personalizados.
Solução
A leitura dessas 2 páginas me deu todas as informações sobre como usar uma plataforma DBAL customizada por meio do middleware Doctrine:
true, 'index_name_2' => true, ]; #[\Override] protected function _getPortableTableIndexesList(array $tableIndexes, string $tableName): array { $indexes = parent::_getPortableTableIndexesList($tableIndexes, $tableName); foreach (array_keys($indexes) as $indexName) { if (isset(self::IGNORED_INDEXES[$indexName])) { unset($indexes[$indexName]); } } return $indexes; } }
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3