您可以使用實體檔案上的#[ORM\Index(fields: ['fieldName'] 屬性建立資料庫索引,Doctrine 將完成剩餘的工作來為您管理索引,但是我不會談論這個。
隨著您的專案成長或需要特定要求,您可能需要使用自訂索引類型,例如GIST、GIN、BRIN 等(https://www.postgresql.org/docs/current/indexes-types.html )。 Doctrine 不支援建立開箱即用的特定於資料庫供應商的索引類型(參考)。要解決此問題,您可以直接對資料庫執行 CREATE INDEX DDL,或將 DDL 寫入到doctrine-migrations 檔案中。後一個選項可讓您更輕鬆地部署或回滾變更。
無論您使用哪種方法建立自訂索引,Doctrine 都會將這些自訂索引始終標記為未映射索引,因此如果您執行Doctrine:schema:validate 您將收到錯誤,指出如果您的資料庫不同步,同樣,在執行doctrine:schema:update --dump-sql 或doctrine:migrations:diff 時,它會顯示DROP INDEX ... 語句以刪除自訂索引。
解決方案
閱讀這兩頁為我提供了有關如何透過 Doctrine 中間件使用自訂 DBAL 平台的所有資訊:
根據需要修改命名空間和類別名稱。
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; } }
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3