Service of type ‚Doctrine\DBAL\Connection‘ not found

ondrusu
Člen | 118
+
0
-

Ahojte, přemigroval jsem Nette ze 2.4 na 3.0
Ale píše mi to chybu a nevím co jsem kde opomenul.
Ale ta třída tam je vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php

Nette\DI\MissingServiceException

Service of type 'Doctrine\DBAL\Connection' not found.

composer.json

		"php": ">= 7.1",
		"nette/application": "^3.0",
		"nette/bootstrap": "^3.0",
		"nette/caching": "^3.0",
		"nette/database": "^3.0",
		"nette/di": "^3.0",
		"nette/finder": "^2.5",
		"nette/forms": "^3.0",
		"nette/http": "^3.0",
		"nette/mail": "^3.0",
		"nette/robot-loader": "^3.0",
		"nette/security": "^3.0",
		"nette/utils": "^3.0",
		"latte/latte": "^2.5",
		"tracy/tracy": "^2.6",
		"dg/adminer-custom": "^1.6",
		"roave/security-advisories": "dev-master",
		"jkuchar/pdfresponse": "dev-master",
"nettrine/orm": "dev-master",
 "nettrine/dbal": "dev-master as 0.3.0"

Neporadíte mi co dělám špatně, už to hledám dost dlouho.

Díky

ali
Člen | 342
+
0
-

Ukaz konfiguraci Nettrine. Tahle vyjimka nema nic spolecneho s chybejici tridou.

ondrusu
Člen | 118
+
0
-

@ali

config_local.neon

dbal:
    connection:
        host: host
        user: user
        password: pass
        dbname: dbname
        driver: pdo_mysqli

config.neon

extensions:
        orm: Nettrine\ORM\DI\OrmExtension

Je to jen ta základní konfigurace co by se měla nastavit podle github.

MajklNajt
Člen | 470
+
0
-

cache premazaná?

ondrusu
Člen | 118
+
0
-

MajklNajt napsal(a):

cache premazaná?

Ano.

Mistrfilda
Člen | 76
+
+1
-

nettrine/dbal máš zaregistrovaný v configu?

extensions:
	dbal: Nettrine\DBAL\DI\DbalExtension

Tuším že to musí být zaregistrované zvlášť vedle orm.

ondrusu
Člen | 118
+
0
-

Díval jsem se do kódu. A souvisí to s EntityManagerem.

Nettrine\ORM\DI\OrmExtension:143

		// Entity Manager
		$original = $builder->addDefinition($this->prefix('entityManager'))
			->setType(DoctrineEntityManager::class)
			->setFactory(DoctrineEntityManager::class . '::create', [
				$builder->getDefinitionByType(Connection::class), // Nettrine/DBAL
				$this->prefix('@configuration'),
			])
			->setAutowired(false);

Když přidám do konfigurace

entityManager: \Nettrine\ORM\EntityManagerDecorator

Tak to píše už jinou chybu ;)

Too few arguments to function Nettrine\ORM\EntityManagerDecorator::__construct(), 0 passed

Co bych tam tedy měl dát do té konfigurace?

Mysteria
Člen | 797
+
+2
-

Samozřejmě že ti konfigurace nebude fungovat, když jí uděláš jenom polovinu. Musíš si to readme ale přečíst celé. :)

extensions:
    dbal: Nettrine\DBAL\DI\DbalExtension
	orm: Nettrine\ORM\DI\OrmExtension
	orm.annotations: Nettrine\ORM\DI\OrmAnnotationsExtension

dbal:
    connection:
        host: 127.0.0.1
        user: root
        password:
        dbname: nettrine

orm.annotations:
    paths:
        - App/Model/Database/Entity
ondrusu
Člen | 118
+
0
-

Aha OK díky, už to funguje.
@Mysteria mockrát děkuji ;)

stanley89
Člen | 6
+
+1
-

Asi bych jen doplnil, že závisí i na pořadí, čili extension dbal musí být v konfiguraci před extension orm tak, jak je to v readme.