Ako použiť Doctrine ORM v Nette Frameworku

před 5 lety od Rick Strafy  

V tomto príspevku sa pokúsim napísať stručný návod ako použiť Doctrine ORM v Nette FW. Najviac rozšírená a odporúčaná integrácia Doctrine do Nette je Nettrine, udržiavaná je contributte tímom.

Konzolové rozšírenie

Pre správne používanie Doctrine potrebujeme balík symfony/console (pre konzolové príkazy), nette integráciu môžeme nainštalovať cez composer príkazom composer require contributte/console, po nainštalovaní toto rozšírenie zaregistrujeme do hlavného konfiguračného neon súboru.

extensions:
    console: Contributte\Console\DI\ConsoleExtension(%consoleMode%)

Tiež je potrebné vytvoriť bin zložku a v nej console súbor s týmto obsahom a pridať súboru oprávnenia na spustenie.

Doctrine rozšírenia

Potrebujeme nainštalovať iba jedno ďalšie rozšírenie, pretože dbal, cache a annotations budú nainštalované automaticky ako závislosti, composer require nettrine/orm.

Po úspešnej inštalácií potrebujeme zaregistrovať rozšírenia do neon konfigurácie, najlepší spôsob je vytvoriť nový súbor doctrine.neon v konfiguračnej zložke (v ktorej by už mal byť aj local.neon do ktorého uložíme údaje k DB) a zahrnúť ho do hlavného konfiguračného súboru (pravdepodobne config.neon alebo common.neon) pridaním tohto na koniec súboru:

includes:
    - doctrine.neon

Teraz potrebujeme zaregistrovať a nastaviť doctrine rozšírenia, priložím ukážku nakonfigurovaného doctrine.neon súboru s pdo_mysql driverom.

extensions:
    # Odkomentujte len ak používate anotácie namiesto php8 atribútov
    # doctrine.annotations: Nettrine\Annotations\DI\AnnotationsExtension
    doctrine.dbal: Nettrine\DBAL\DI\DbalExtension
    doctrine.dbal.console: Nettrine\DBAL\DI\DbalConsoleExtension
    doctrine.orm: Nettrine\ORM\DI\OrmExtension
    doctrine.orm.attributes: Nettrine\ORM\DI\OrmAttributesExtension
    doctrine.orm.cache: Nettrine\ORM\DI\OrmCacheExtension
	# Odkomentujte len ak používate anotácie namiesto php8 atribútov
    # doctrine.orm.annotations: Nettrine\ORM\DI\OrmAnnotationsExtension
    doctrine.orm.console: Nettrine\ORM\DI\OrmConsoleExtension
    doctrine.cache: Nettrine\Cache\DI\CacheExtension

doctrine.orm.attributes: # Ak používate stále anotácie, upravte na doctrine.orm.annotations
    mapping:
        App\Model: %appDir%/Model # Adresár kde sa začnú hľadať entity

doctrine.dbal:
    debug:
        panel: %debugMode%
    connection:
        driver: pdo_mysql
        host: %doctrine.host%
        user: %doctrine.user%
        password: %doctrine.password%
        dbname: %doctrine.dbname%

Posledná vec čo potrebujeme je pridať databázové údaje do nášho local.neon súboru.

parameters:
    doctrine:
        host: localhost
        user: user
        password: password
        dbname: test

Od teraz je možné vytvárať entity a aktulizovať databázovú štruktúru s príkazom

bin/console orm:schema-tool:update --dump-sql --force

Tento príspevok je len jednoduchá ukážka, ak potrebujete pokročilé možnosti konfigurácie, nastavenia cache, migrácie, vlastné funkcie alebo typy stĺpcov, pozrite si Nettrine Dokumentáciu.

Komentáře

  1. Díky za jednoduchý návod.

    před 5 lety
  2. Super 🙂 chtělo by to pokračování 😉 … ve stejném duchu podrobněji popsat poslední odstavec 😉

    před 5 lety
  3. @stulda, no neviem ako by som to nazval, ako pouzivat Doctrine a pisat cez Nettrine konfiguraciu je uz v dokumentaciach samotnych projektov, do jedneho blog clanku by sa vsetko nezmestilo, navyse niekto pouziva integer ID, niekto UUID, niekto zase PostgreSQL, velmi sa to vetvi. Mozno by som v buducnosti mohol viac popisat migracie a ako ich pouzivat, alebo nejaku zakladnu pracu s entitami a ako strukturovat skeleton v projekte.

    před 5 lety

Chcete-li odeslat komentář, přihlaste se