Contributte / Nettrine – integrace Doctrine do Nette

Felix
Nette Core | 1186
+
+6
-

Contributte / Nettrine / Doctrine

Ve svete PHP existuje mnoho databazovych vrstev, ale jedna trochu vycniva svoji velikosti, funkcnosti a komunitou. Jedna se o Doctrine.

Do Nette sveta Doctrine kdysi privedl balicek Kdyby/Doctrine.

Posledni roky tu s mnoha lidmi z Contributte (a dalsimi), pracujeme na novejsi verzi, ktera je rozdelena do vice balicku, ma podporu poslednich PHP verzi, integrace do Tracy, podporu Symfony Console a snazime se vzdy pridat neco yummy navic.

Github: https://github.com/nettrine
Examples:

Roadmap
Balicky
Balicek Doctrine PHP
nettrine/dbal doctrine/dbal 7.2–8.0
nettrine/orm doctrine/orm 7.2–8.0
nettrine/migrations doctrine/migrations 7.2–8.0
nettrine/fixtures doctrine/fixtures 7.2–8.0
nettrine/cache doctrine/cache 7.2–8.0
nettrine/annotations doctrine/annotations 7.2–8.0
nettrine/extensions-knplabs knplabs/doctrinebehaviors 7.2–8.0
nettrine/extensions-atlantic18 doctrine-extensions/doctrineextensions 7.2–8.0
nettrine/extensions-beberlei beberlei/doctrineextensions 7.2–8.0
nettrine/extensions-oroinc oroinc/doctrine-extensions 7.2–8.0
nettrine/mongodb mongodb/mongodb 7.2–8.0
nettrine/odm doctrine/mongodb-odm 7.2–8.0
Feedback

Feedback je vitan. Jeste vic jsou vitane pull requesty.

dakur
Člen | 493
+
0
-

Ahoj, díky za práci!

Měl bych otázku – v kdyby/doctrine byl EntityManager. Zde vidím EntityManagerDecorator a v examplech potom vlastní implementaci entity manageru. Přímo v nettrine/* žádný není? V docs nevidím o EM žádnou zmínku.

Edit: aha, teď koukám, že když z DI vytahuju EntityManagerInterface, tak to funguje. 😳🙂

Editoval dakur (4. 5. 2022 10:51)

Felix
Nette Core | 1186
+
+1
-

On bude EntityManager final v budoucich verzich, mam takovy pocit. Takze je doporuceno pouzivat interface a nebo decorator.

dakur
Člen | 493
+
0
-

Super. A ještě taková drobnost – v docs nettrine/annotations jsem vůbec nenašel field mapping, ačkoliv v examples se vyskytuje.

Editoval dakur (27. 5. 2022 7:54)

lukasnov
Člen | 12
+
0
-

Ahoj, prosím Vás k nettrine asi používáte contributte/event-dispatcher? tam mám problém, že na kdyby/events to fungovalo, bez vytváření classy pro jednotlivý event a bez spuštění přes dispatcher, ale předpokládám, že pokud chci přejít, musít toto vytrpět, nebo to děláte nějak jinak? Díky

Felix
Nette Core | 1186
+
0
-

Ahoj, kdyby/events uz je fakt stare. Co presne ti slo/neslo?

lukasnov
Člen | 12
+
0
-

Mám třeba v Listeneru: BaseManager:onCreate ⇒ logChangelog a pak mám UserManager::onCreate ⇒ sendEmail a v kdyby/events mám jen v BaseManageru:

function save($entity)
{
	$this->em->persist + flush

	$this->onCreate($entity);
}

a jestli to chápu dobře, tak to musím přepsat na

function save($entity)
{
	$this->em->persist + flush

	$this->eventDispatcher->dispatch(new BaseCreatedEvent($entity));
}

tu pak UserManagorovi podědit a udělat

function save($entity)
{
	parent::save($entity);

	$this->eventDispatcher->dispatch(new UserCreatedEvent($entity));
}

nebo by to šlo u BaseCreateEventu přes if $entity::class === User::class kontrolovat

Ale nějak se mi to nezdá, tak zjištuju jestli neexistuje lepší způsob 🙂