SyMfonAK - vyvíjame databázy pomocou frameworku Symfony

Doctrine vytvorenie Entít z existujúcej databázy

Z SyMfonAK
Prejsť na: navigácia, hľadanie

Symfony dokumentáciaDatabázy (Doctrine ORM) → Doctrine vytvorenie Entít z existujúcej databázy


originál návod

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.

(návod k 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