SyMfonAK - vyvíjame databázy pomocou frameworku Symfony

Databázy (Doctrine ORM)

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

Symfony dokumentácia → Databázy (Doctrine ORM)


originál návod

jednoduchý príklad Produkt

konfigurácia databázy

Nastavenie databázy na UTF8 Dôležité je nastaviť Symfony pre spojenie s databázou znakovou sadou utf8. Inak defaultne databázy používajú latin1 napríklad. Ak nastavujem databázu MySQL (MariaDB), tak typicky v my.cnf

# od verzie 5.5.3 je zavedené utf8mb4, čo odporúča toto nastavenie:
collation-server      = utf8mb4_unicode_ci # nahrádza doteraz používané utf8_unicode_ci
charakter-set-server  = utf8mb4            # nahrádza doteraz používané utf8 
<pre>

v Symfony nastavíme preto:

<pre>
# app/config/config.yml
doctrine:
    dbal:
        charset: utf8mb4
        default_table_options:
            charset: utf8mb4
            collate: utf8mb4_unicode_ci

vytvorenie triedy pre entitu

Adresár Entity v src/AppBundle.

Obsahuje súbory "Menotbl.php", tieto reprezentujú entity (entita ako tabuľka databázy).

Súbory Menotbl.php sú objekty.

<?php
// src/AppBundle/Entity/Menotbl.php
nameSpace AppBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity
 * @ORM\Table(name="skutocneMenoTbl")
 */
class Menotbl
{
  /**
   * @ORM\Column(type="integer")
   * @ORM\Id
   * @ORM\GeneratedValue(strategy="AUTO")
   */
   private $id;


}
?>


Column types:

   string: Type that maps a SQL VARCHAR to a PHP string.
   integer: Type that maps a SQL INT to a PHP integer.
   smallint: Type that maps a database SMALLINT to a PHP integer.
   bigint: Type that maps a database BIGINT to a PHP string.
   boolean: Type that maps a SQL boolean or equivalent (TINYINT) to a PHP boolean.
   decimal: Type that maps a SQL DECIMAL to a PHP string.
   date: Type that maps a SQL DATETIME to a PHP DateTime object.
   time: Type that maps a SQL TIME to a PHP DateTime object.
   datetime: Type that maps a SQL DATETIME/TIMESTAMP to a PHP DateTime object.
   datetimetz: Type that maps a SQL DATETIME/TIMESTAMP to a PHP DateTime object with timezone.
   text: Type that maps a SQL CLOB to a PHP string.
   object: Type that maps a SQL CLOB to a PHP object using serialize() and unserialize()
   array: Type that maps a SQL CLOB to a PHP array using serialize() and unserialize()
   simple_array: Type that maps a SQL CLOB to a PHP array using implode() and explode(), with a comma as delimiter. IMPORTANT Only use this type if you are sure that your values cannot contain a ”,”.
   json_array: Type that maps a SQL CLOB to a PHP array using json_encode() and json_decode()
   float: Type that maps a SQL Float (Double Precision) to a PHP double. IMPORTANT: Works only with locale settings that use decimal points as separator.
   guid: Type that maps a database GUID/UUID to a PHP string. Defaults to varchar but uses a specific type if the platform supports it.
   blob: Type that maps a SQL BLOB to a PHP resource stream

Id, identifikátor, primárny kľúč

Pomocou anotácie @Id označíme pole, ktoré má byť identifikátorom.

pridanie informácii pre mapping

generovanie getterov a settterov

$ php bin/console doctrine:generate:entities AppBundle/Entity/MenoEntity

založenie tabuliek (schémy) databázy

$ php bin/console doctrine:schema:update --force

vloženie objektu do databázy

výber objektu z databázy

Získanie objektu z databázy je ľahké. Predpokladajme že sme pripravili smerovanie aby sme mohli zobraziť jednu parcelu podľa jej položky id.

public function zobrazAction($parcelaId)
{
    $parcela = $this->getDoctrine()
        ->getRepository(Parcely::class)
        ->find($parcelaId);

    if (!$parcela) {
        throw $this->createNotFoundException(
            'Nebola nájdená parcela zvolenej hodnoty id '.$parcelaId
        );
    }

    // ... vykonaj niečo, napríklad zobraz $parcela v templatu
}

Toto sa dá dosiahnuť aj bez jediného kódu využitím skratky pomocou @ParamConverter. Podrobnosti o tejto téme možno nájsť Param konverter.

úprava existujúceho objektu v databáze

zmazanie objektu

Dotazy na objekty

DQL dotazy

Dotazy pomocou Doctrine Query Builder

Ukladanie vlastných dotazov repozitárov

Konfigurácia

Odkazy na typy polí

Relácie a asociácie

Ako pracovať s asociáciami/reláciami Doctrine

Myšlienky na záver

Naučte sa viac