Symfony

Com començar amb Doctrine?

Doctrine, com ja s'ha comentat en algun article anterior, és un ORM amb el que aconseguim una abstracció en l'ús de la base de dades.

Drauta agencia digitalDrauta

Com començar amb Doctrine?

Funcionament bàsic de Doctrine

Per entendre Doctrine cal entendre el concepte d'entitat, que és extremadament senzill, una classe amb unes anotacions. Les anotacions són les que permeten traslladar aquesta classe a la base de dades.

El procediment és simple, atès que una entitat és una taula, cada propietat una columna i cada objecte una fila.

No obstant això, no és una abstracció completa, ja que per a operacions complexes és necessari conèixer SQL per poder treballar de forma eficient amb el motor DQL que ens proporciona.

Encara que quan ens descarreguem una versió de Symfony completa inclou per defecte Doctrine, no és obligatori utilitzar-ho, encara que com anem a no utilitzar una eina tan meravellosa?.

La primera entitat amb Doctrine

La idea és que dins del nostre Bundle tenim un directori Entity, amb les diferents entitats que afecten a aquest bundle o part de l'aplicació.

Les classes que vulguem mapejar han de tenir unes anotacions, suposem que crearem un fitxer Exemple.php que guardem en src/AppBundle/Entity:

<?php
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
 * @ORM\Entity
 * @ORM\Table(name="exemple")
 */
class Ejemplo
{
    /**
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     * @ORM\Column(type="integer")
     */
    private $id;
    /**
     * @ORM\Column(type="string")
     */
    private $name;

    public function getName() {
      return $this->name;
    }

    public function setName($name) {
      $this->name = $name;
    }
}
?>

Com es pot veure a la classe Exemple,  estem dient que és una Entitat, els objectes de la qual s'emmagatzemen en la taula “exemple” i té dos atributs:

  • “id”: que serà autogenerado sencer i únic per a aquest tipus de contingut
  • “name”: un String

Ara tenint la base de dades degudament configurada en el fitxer app/config/parameters.yml tenim tres comandos bàsics:

php bin/console doctrine:database à Mitjançant les dades configurades de la base de dades és capaç de crear la base de dades.

php bin/console doctrine:database:drop --force à Esborra la base de dades.

Però la comanda més meravellosa és la següent:

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

La comanda té la finalitat d'actualitzar l'estructura de la base de dades, i si no té estructura la crea.

Si a la classe anterior Exemple.php afegíssim un camp més i executem la comanda php bin/console doctrine:schema:update --force actualitzarà la base de dades afegint una columna amb el nou camp.

En canvi, si esborrem un camp de la classe exemple i tornem a executar la comanda, eliminarà la columna referent al camp de la base de dades.

Vols començar un nou projecte amb nosaltres?

Necessites un servei per a la teva web? Descobreix com et podem ajudar i no dubtis en contactar amb nosaltres.