Sie können Datenbankindizes mit dem Attribut #[ORM\Index(fields: ['fieldName']] in der Entitätsdatei erstellen und Doctrine erledigt den Rest, um den Index für Sie zu verwalten, aber Darüber werde ich nicht sprechen.
Wenn Ihr Projekt wächst oder bestimmte Anforderungen erfordert, müssen Sie möglicherweise benutzerdefinierte Indextypen wie GIST, GIN, BRIN usw. verwenden (https://www.postgresql.org/docs/current/indexes-types.html). Doctrine unterstützt nicht die standardmäßige Erstellung datenbankanbieterspezifischer Indextypen (ref).Um dieses Problem zu lösen, können Sie entweder die CREATE INDEX-DDL direkt in der Datenbank ausführen oder die DDL in die Doctrine-Migrations-Datei schreiben. Die letztere Option bietet Ihnen den Vorteil, dass die Änderungen einfacher bereitgestellt oder rückgängig gemacht werden können.
Unabhängig davon, welche Methode Sie zum Erstellen des benutzerdefinierten Index verwenden, markiert Doctrine diese benutzerdefinierten Indizes immer als nicht zugeordnete Indizes. Wenn Sie daher doctrine:schema:validate ausführen, erhalten Sie eine Fehlermeldung, die besagt, dass Ihre Datenbank nicht synchron ist Das Gleiche gilt, wenn Sie doctrine:schema:update --dump-sql oder doctrine:migrations:diff ausführen. Es wird Ihnen die Anweisung DROP INDEX ... angezeigt, um die benutzerdefinierten Indizes zu entfernen.
Lösung
Durch das Lesen dieser beiden Seiten habe ich alle Informationen darüber erhalten, wie man eine benutzerdefinierte DBAL-Plattform über die Doctrine-Middleware verwendet:
Ändern Sie den Namespace und den Klassennamen entsprechend Ihren Anforderungen.
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; } }
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3