Symfony

¿Cómo empezar con Doctrine?

Doctrine, como ya se ha comentado en algún articulo anterior, es un ORM con el que conseguimos una abstracción en el uso de la base de datos.

Drauta agencia digitalDrauta

¿Cómo empezar con Doctrine?

Funcionamiento básico de Doctrine

Para entender Doctrine hay que entender el concepto de entidad, que es extremadamente sencillo, una clase con unas anotaciones. Las anotaciones son las que permiten trasladar esa clase a la base de datos.

El procedimiento es simple, dado que una entidad es una tabla, cada propiedad una columna y cada objeto una fila.

Sin embargo, no es una abstracción completa, puesto que para operaciones complejas es necesario conocer SQL para poder trabajar de forma eficiente con el motor DQL que nos proporciona.

Aunque cuando nos descargamos una versión de Symfony completa incluye por defecto Doctrine, no es obligatorio utilizarlo, aunque ¿cómo vamos a no utilizar una herramienta tan maravillosa?.

La primera entidad con Doctrine

La idea es que dentro de nuestro Bundle tenemos un directorio Entity, con las distintas entidades que afectan a dicho bundle o parte de la aplicación.

Las clases que queramos mapear deben tener unas anotaciones, supongamos que creamos un fichero Ejemplo.php que guardamos en src/AppBundle/Entity:

<?php
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
 * @ORM\Entity
 * @ORM\Table(name="ejemplo")
 */
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;
    }
}
?>

Como se puede ver en la clase Ejemplo,  estamos diciendo que es una Entidad, cuyos objetos se almacenaran en la tabla “ejemplo” y tiene dos atributos:

  • “id”: que será autogenerado entero y único para ese tipo de contenido
  • “name”: un String

Ahora teniendo la base de datos debidamente configurada en el fichero app/config/parameters.yml tenemos tres comandos básicos:

php bin/console doctrine:database à Mediante los datos configurados de la base de datos es capaz de crear la base de datos.

php bin/console doctrine:database:drop --force à Borra la base de datos.

Pero el comando más maravilloso es el siguiente:

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

El comando tiene la finalidad de actualizar la estructura de la base de datos, y si no tiene estructura la crea.

Si a la clase anterior Ejemplo.php añadiéramos un campo más y ejecutamos el comando php bin/console doctrine:schema:update --force actualizará la base de datos añadiendo una columna con el nuevo campo.

En cambio, si borramos un campo de la clase ejemplo y volvemos a ejecutar el comando, eliminará la columna referente al campo de la base de datos.

¿Quieres empezar un nuevo proyecto con nosotros?

¿Necesitas servicios para tu web? Descubre como te podemos ayudar y no dudes en contactar con nosotros.