SyMfonAK - vyvíjame databázy pomocou frameworku Symfony
Doctrine vytvorenie Entít z existujúcej databázy
Symfony dokumentácia → Databázy (Doctrine ORM) → Doctrine vytvorenie Entít z existujúcej databázy
originál návod
Obsah
Ako vytvoriť Entity z existujúcej databázy
Sú prípady, kedy nezačíname s novou databázou ale už s existujúcou, ktorá sa často ani nebude meniť. Pre takéto prípady prichádza Doctrine s nástrojmi, pomocou ktorých možno vytvoriť entity podľa existujúcej databázy. V dokumentácii Doctrine o týchto nástrojoch sa dozvedáme, že toto býva jednorázový krok na začiatku projektu a nástroje Doctrine vedia zmapovať asi 70-80% informácií, ostatné treba dorobiť.
Týmto príkazom vytvoria nástroje Doctrine triedy podľa tabuliek databázy v adresári src/Entity
php bin/console doctrine:mapping:import "App\Entity" annotation --path=src/Entity
Tieto metadáta možno generovať do XML alebo YAML po úprave v nastaveniach (viac viď orig dokumentáciu..).
Vytvorenie tried PHP (Generating the Getters & Setters or PHP Classes)
V predchádzajúcom kroku sa vytvorila trieda pre entitu ale bez metód typu setters and getters alebo sme generovali len XML ci YAML výstup a v tom prípade nie sú založené ani triedy PHP.
$ php bin/console make:entity --regenerate App
Príklad
$ bin/console doctrine:mapping:import "App\Entity" annotation --path=src/Entity Importing mapping information from "default" entity manager > writing src/Entity/Stvorce2500Svkb10km.php
$ php bin/console make:entity --regenerate App
updated: src/Entity/Stvorce2500Svkb10km.php
Success!
Doctrine2-spatial - pre databázy s GIS položkami v tabuľkách
Ak naše tabuľky využívajú GIS priestorové typu, treba najprv nainštalovať tento doplnok Doctrine2-spatial.
$ composer req creof/doctrine2-spatial
Using version ^1.2 for creof/doctrine2-spatial ./composer.json has been updated Loading composer repositories with package information Updating dependencies (including require-dev) Restricting packages listed in "symfony/symfony" to "4.2.*" Prefetching 4 packages - Downloading (100%) Package operations: 4 installs, 0 updates, 0 removals - Installing creof/wkb-parser (v2.3.0): Loading from cache - Installing creof/wkt-parser (2.2.0): Loading from cache - Installing creof/geo-parser (2.1.0): Loading from cache - Installing creof/doctrine2-spatial (1.2.0): Loading from cache Writing lock file Generating autoload files ocramius/package-versions: Generating version class... ocramius/package-versions: ...done generating version class Executing script cache:clear [OK] Executing script assets:install public [OK]
Potom editovať súbor config/packages/doctrine.yaml:
# Doctrine2-spatial a potom tieto riadky pridať: types: geometry: CrEOF\Spatial\DBAL\Types\GeometryType point: CrEOF\Spatial\DBAL\Types\Geometry\PointType geography: CrEOF\Spatial\DBAL\Types\GeographyType mapping_types: _text: string