in ZF2 war es möglich, mehrere Adapter wie dies in der module.config.php
zu konfigurieren: IchZF3 mehrere Datenbankadapter
class AlbumControllerFactory implements FactoryInterface
{
public function createService(ServiceLocatorInterface $serviceLocator)
{
$albumTable = $serviceLocator->getServiceLocator()->get('Album\Model\AlbumTable');
$db1Adapter = $serviceLocator->getServiceLocator()->get('db1');
$db2Adapter = $serviceLocator->getServiceLocator()->get('db2');
return new AlbumController($albumTable, $db1Adapter, $db2Adapter);
}
}
Jetzt:
'db' => array(
'adapters'=>array(
'db1' => array(
'driver' => 'Pdo',
'dsn' => 'mysql:dbname=zf2;host=localhost',
'driver_options' => array(
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''
),
'username' => 'zf2',
'password' => 'zf2test',
),
'db2' => array(
'driver' => 'Pdo',
'dsn' => 'mysql:dbname=zf1;host=localhost',
'driver_options' => array(
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''
),
'username' => 'zf1',
'password' => 'zf1test',
),
)
),
In der Controller Factory ich sie über den Servicemanager bekommen könnte Ich versuche, das gleiche in Zend Framework 3 zu tun - aber diese geschachtelte Array-Konfiguration funktioniert nicht:
Fatal error: Uncaught exception 'Zend\Db\Adapter\Exception\InvalidArgumentException' with message 'createDriver expects a "driver" key to be present inside the parameters' in /var/www/USER/teckert/zf3/vendor/zendframework/zend-db/src/Adapter/Adapter.php:262
Ich denke, dass in ZF2 die adapters
Schlüssel sind bereits behandelt, wenn der dbAdapter den Fahrer zu schaffen versucht - aber dies geschieht nicht in ZF 3.
Irgendwelche Hinweise sind herzlich willkommen ...
Die Handbuch der zend-db with the adapters section war nicht klar genug für mich
EDIT
nach this doc ich habe den folgenden Code-Schnipsel in der globalen Konfigurationsdatei hinzugefügt:
'service_manager' => [
'abstract_factories' => [
\Zend\Db\Adapter\AdapterAbstractServiceFactory::class,
],
],
Beim Versuch, den dbAdapter mit $container->get('db1')
in meinem AlbumTableFactory
zu bekommen ich diesen Fehler:
Unable to resolve service "db1 to a factory; are you certain you provided it during configuration?
danke für Ihre Antwort. Ich habe meine Post bearbeitet – rogaa
Vergessen Sie nicht, dass 'Zend \ Db' Modul muss auch installiert werden. Es ist nicht standardmäßig in Zend Framework 3 enthalten. –