Ich arbeite mit einer Symfony3-App und möchte mehrere Verbindungen zu verschiedenen Datenbanken einrichten.Symfony3: Wie stellen Sie mehrere Verbindungen ein?
Ich habe mich umgesehen und ich habe die Dokumentation über entityManagers und DB-Verbindungen gefunden. Mein config.yml ist wie folgt konfiguriert:
config.yml
doctrine:
dbal:
default_connection: default
connections:
default:
driver: pdo_mysql
host: "%database_host%"
port: "%database_port%"
dbname: "%database_name%"
user: "%database_user%"
password: "%database_password%"
charset: UTF8
mapping_types:
enum: string
other:
driver: pdo_mysql
host: "%database_host2%"
port: "%database_port2%"
dbname: "%database_name2%"
user: "%database_user2%"
password: "%database_password2%"
charset: UTF8
mapping_types:
enum: string
orm:
dql:
string_functions:
DAY: DoctrineExtensions\Query\Mysql\Day
MONTH: DoctrineExtensions\Query\Mysql\Month
YEAR: DoctrineExtensions\Query\Mysql\Year
auto_generate_proxy_classes: "%kernel.debug%"
naming_strategy: doctrine.orm.naming_strategy.underscore
auto_mapping: true
So, jetzt ich tun, um meine Datenbank wie folgt zugreifen können:
$con2 = $this->get('doctrine.dbal.other_connection');
$orders = $con2->fetchAll('SELECT * FROM orders');
Aber was ich wirklich brauchen, ist zu konfigurieren eine zweite orm-mapping-verbindung, die es mir ermöglicht, mit entitäten zu interagieren, anstatt mich direkt mit der zweiten datenbank zu beschäftigen. Also noch einmal, wie die Dokumentation sagt habe ich unter der Lehre ORM-Label:
orm:
dql:
string_functions:
DAY: DoctrineExtensions\Query\Mysql\Day
MONTH: DoctrineExtensions\Query\Mysql\Month
YEAR: DoctrineExtensions\Query\Mysql\Year
auto_generate_proxy_classes: "%kernel.debug%"
naming_strategy: doctrine.orm.naming_strategy.underscore
auto_mapping: true
default_entity_manager: default
entity_managers:
default:
connection: default
mappings:
AppBundle: ~
other:
connection: other
mappings:
OtherBundle: ~
Dies löst eine Ausnahme aus:
ParseException in Parser.php Linie 296: konnte nicht in Zeile 78 (in der Nähe von "parsen entity_manager: ").
Wie sollte ich meine config.yml konfigurieren, um orm-mapping für meine zweite Datenbankverbindung zuzulassen? Soll ich das dql-Label löschen und nur unter einem bestimmten Entity-Manager-Label verwenden?
Der Fehler bezieht sich auf einen YAML-Syntaxfehler. Dies spiegelt sich jedoch nicht in der Beispielkonfiguration wider, die Sie hier anzeigen. Möglicherweise möchten Sie Ihre vollständige Konfigurationsdatei anzeigen. – xabbuh