Díky rozšíření Kdyby/Doctrine je implementace Doctrine ORM do frameworku Nette snadná.
Instalace
Do existujícího projektu Nette nainstalujeme rozšíření kdyby/doctrine a kdyby/events:
$ composer require kdyby/doctrine $ composer require kdyby/events
V souboru konfigurace Nette (config.neon) nainstalované rozšíření zaregistrujeme v sekci extensions:
extensions: console: Kdyby\Console\DI\ConsoleExtension events: Kdyby\Events\DI\EventsExtension annotations: Kdyby\Annotations\DI\AnnotationsExtension doctrine: Kdyby\Doctrine\DI\OrmExtension
a uvedeme alespoň minimální nastavení pro rozšíření doctrine:
doctrine: user: root password: password dbname: nazev_databaze metadata: App: %appDir%
(Sekce metadata nastavuje mapování – klíč je název namespace (App) a hodnota je výchozí adresář s třídami.)
Entity
Vytvoříme první entitu:
<?php namespace App; use Doctrine\ORM\Mapping as ORM; /** * @ORM\Entity */ class Article { /** * @ORM\Id * @ORM\Column(type="integer") * @ORM\GeneratedValue */ protected $id; /** * @ORM\Column(type="string") */ protected $title; }
V příkazové řádce ověříme, že je Doctrine console funkční:
$php ./www/index.php
Zjistíme, za o naší nové entitě Article ví:
$ php ./www/index.php orm:info
a můžeme aktualizovat schéma databáze.
Schéma databáze
Vytvoření schéma databáze:
php ./www/index.php orm:schema-tool:create
Další příkazy pro práci v Doctrine consoli.