En este post aprenderemos a realizar configuraciones básicas de nuestras bases de datos utilizando DOCTRINE, pero…. ¿Que es Doctrine?

DOCTRINE es el hogar de varias bibliotecas de PHP las cuales se centraron principalmente en el almacenamiento de base de datos,pero… ¿porque utilizar DOCTRINE? 

Sabemos que uno de los problemas mas comunes en el desarrollo web es la comunicación de este con una base de datos, ya que se tiene que escribir y leer datos de forma continua, el objetivo de DOCTRINE es ofrecer herramientas poderosas para poder realizar este fin y lograr el manejo de bases de datos de forma fácil.

Lo primero que se debe hacer es la creación de un proyecto en symfony, todos los pasos para realizar el proyecto esta en este post Instalación Symfony.

Doctrine utiliza unos parámetros básicos, los cuales están en el archivo parameters.yml el cual se encuentra en app/config/parameters.yml en este se encuentran los parámetros con los cuales se genera la conexión con la base de datos, así que debemos verificar que el archivo contenga la información correcta y de no ser así modificar su contenido.

$nano app/config/parameters.yml

# This file is auto-generated during the composer install
parameters:
    database_host: 127.0.0.1     
    database_port: 3306            #Puerto genérico de la base de datos
    database_name: ejemploDT       #Nombre de la base de datos
    database_user: root            #Usuario de mysql
    database_password: admin       #Contraseña de mysql
    mailer_transport: smtp
    mailer_host: 127.0.0.1
    mailer_user: null
    mailer_password: null
    secret: ThisTokenIsNotSoSecretChangeIt

Para saber el puerto de nuestra base de datos podemos buscarla en el archivo de configuración de mysql el cual se encuentra en /etc/mysql/my.cnf

 Esta es la salida de el archivo en cuestión, debemos verificar el contenido de este para que DOCTRINE funcione correctamente.

Luego de esto podemos iniciar a utilizar DOCTRINE, para crear una base de datos simplemente utilizamos el siguiente comando:

$ php app/console doctrine:database:create

Y se creara la base de datos con los parámetros establecidos en el archivo anteriormente mencionado.  Para verificar esto podemos mirar que bases de datos tenemos, esto lo hacemos entrando a mysql:

$ mysql -h localhost -u root -p

luego  nos pedirá nuestra contraseña de mysql, se debe tener en cuenta que el usuario de mysql puede variar, esto depende de si el usuario dejo o no el nombre por defecto, de tener otro nombre cambiamos “root” por el nombre de usuario que corresponda.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| drupal8            |
| ejemploDT          |
| symfony            |
+--------------------+

Como podemos ver se creo nuestra base de datos llamada “ejemploDT

Para evitar errores futuros agregamos algunas lineas al archivo de configuración de mysql para modificar la base de datos para que sea UTF8

 $ sudo nano /etc/mysql/my.cnf

Y agregamos las siguientes lineas:

[mysqld]
# Version 5.5.3 introduced "utf8mb4", which is recommended
collation-server     = utf8mb4_general_ci # Replaces utf8_general_ci
character-set-server = utf8mb4            # Replaces utf8

Para iniciar el trabajo en nuestra base de datos creamos una entidad, DOCTRINE nos simplifica esto con el siguiente comando:

 $ php app/console doctrine:generate:entity

Luego de esto solo debemos agregarle un nombre y los campos que deseemos.

El nombre debe ser de la forma: AppBundle:Ejemplo

Por simple curiosidad podemos mirar los archivos generado por DOCTRINE, los cuales se encuentran en la carpeta de nuestro proyecto /src/AppBundle/Entity

$ nano src/AppBundle/Entity/Ejemplo.php

En este archivo podemos encontrar todas los campos que agregamos con DOCTRINE; Ahora debemos crear los captadores y definidores [getName(), setName()] los cuales nos permiten interactuar con las propiedades de nuestra entidad.

$ php app/console doctrine:generate:entities AppBundle/Entity/Ejemplo

Ahora tenemos una clase Ejemplo utilizable ya que con los pasos anteriores DOCTRINE sabe exactamente trabajar con ella.

En nuestra base de datos aún no tenemos la tabla correspondiente a Ejemplo para generarla procedemos a generarla utilizando el siguiente comando:

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

Este comando nos da como arroja las siguientes lineas:

Updating database schema…
Database schema updated successfully! “3” queries were executed

A simple vista se ve que DOCTRINE realizo los cambios correspondientes en nuestra base de datos agregando los campos que le dimos a nuestra entidad, en este caso realizo 3 columnas.

Para mirar como se va modificando nuestra base de datos entramos a mysql como se explico anteriormente y luego nos enfocamos en la que estamos trabajando:

mysql> use ehemploDT;

Ahora miramos sus tablas:

mysql> show tables;
+---------------------+
| Tables_in_ejemploDT |
+---------------------+
| ejemplo             |
+---------------------+
3 rows in set (0.00 sec)

Y procedemos a mirar su contenido:

mysql> describe ejemplo; 
+---------+--------------+------+-----+---------+----------------+
| Field   | Type         | Null | Key | Default | Extra          |
+---------+--------------+------+-----+---------+----------------+
| id      | int(11)      | NO   | PRI | NULL    | auto_increment |
| Nombre  | varchar(255) | NO   |     | NULL    |                |
| Estado  | varchar(255) | NO   |     | NULL    |                |
| Carrera | varchar(255) | NO   |     | NULL    |                |
+---------+--------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)

Con eso se da por terminado nuestro primer contacto con DOCTRINE, Para mas información puedes visitarnos o ponerte en contacto con nosotros por todas nuestras redes, recuerda que el conocimiento te hace libre.