Ako použiť Doctrine ORM v Nette Frameworku

před 17 dny 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:
    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.annotations: Nettrine\ORM\DI\OrmAnnotationsExtension
    doctrine.orm.console: Nettrine\ORM\DI\OrmConsoleExtension
    doctrine.cache: Nettrine\Cache\DI\CacheExtension

doctrine.orm.annotations:
    paths:
        - app/Model # The root folder where to start search for entities

doctrine.dbal:
    debug:
        panel: %debugMode%
    connection:
        driver: pdo_mysql

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

doctrine.dbal:
    connection:
        host: localhost
        user: root
        password: password
        dbname: demo

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.