Symfony 2 CRUD | Entidades

Texto

     En este capítulo comenzaremos a preparar nuestra aplicación, para que podamos interactuar con la base de datos através de lo que se conoce en Symfony, como Entidades y Modelo de datos.

     Gracias a que hemos optado por utilizar Lando, ver o modificar los detalles de conexión con nuestra base de datos es bastante sencillo, podemos verlo en el archivo de configuración de lando, .lando.yml, donde encontraremos rápidamente la siguiente configuración:

services:
  phpmyadmin:
    type: phpmyadmin
    hosts:
      - symfony2.symfony2app.internal
  symfony2:
    type: mariadb
    portforward: true
    creds:
      user: symfony2
      password: symfony2
      database: symfony2

     Como puedes ver, además del acceso a la herramienta PhpMyAdmin, con la cual podrás manipular tus tablas y base de datos, mediante interfaz gráfica; tienes también el nombre tipo de motor de base de datos mariadb y los detalles para el usuario, clave y base de datos.

     Pero si lo prefieres, también podrás ver toda la información relacionada con la base de datos, ejecutando el comando siguiente:

lando info

     El resultado será parecido a la siguiente imagen:

CRUD Symfony 2  | www.drupaladicto.com - Consultor especializado en drupal y symfony

     Para que podamos conectar nuestra aplicación de Symfony, con esta base de datos, tendremos que modificar el archivo parameters.yml, que se encuentra en la ubicación app/config/parameters.yml

     En realidad, este archivo se puede configurar automáticamente, cuando comenzamos con la instalación de nuestra aplicación de Symfony, pero hemos preferido dejarlo para este momento, ya que tendría más sentido mecionarlo, ahora que trabajaremos con las entidades y los datos.

CRUD Symfony 2  | www.drupaladicto.com - Consultor especializado en drupal y symfony

     En el caso de que no tuviéramos creada la base de datos para nuestra aplicación, sólo necesitaríamos ejecutar el siguiente comando para que Symfony se encargara de hacerlo por nosotros (Recuerda que trabajamos con Lando, por eso hemos añadido la palabra al principio del comando):

lando php app/console doctrine:database:create

     Pero como nosotros ya teníamos la base de datos creada desde el principio, lo que tendremos que hacer es decirle a Symfony que la borre y luego vuelva a configurarla, y así podremos interactuar con ella.

lando php app/console doctrine:database:drop --force

CRUD Symfony 2  | www.drupaladicto.com - Consultor especializado en drupal y symfony

     Así, podremos volver a crear nuestra base de datos con el siguiente comando:

lando php app/console doctrine:database:create

CRUD Symfony 2  | www.drupaladicto.com - Consultor especializado en drupal y symfony

     Ahora, para trabajar con nuestro modelo de datos (blog de noticias), tendremos que crear algo llamado Entidad. Esta es básicamente una clase de PHP que define toda la información sobre nuestras páginas de noticias. Symfony tiene una ingeniosa herramienta de línea de comandos para esto que usaremos y otra buena para crear las tablas de base de datos reales que coincidan con este modelo de datos.

     Para generar nuestra entidad, a la que llamaremos noticia, vamos a ejecutar el siguiente comando de Symfony 2, con la ayuda de Lando:

lando php app/console doctrine:generate:entity

     Al igual que nos pasó cuando generamos el Bundle, Symfony nos presentará en pantalla una serie de preguntas relacionadas con nuestra entidad, que debermos ir completando hasta terminar el proceso; sin en algún punto de la generación de la entidad nos equivocamos, podremos hacer clic en la combinación de las teclas Ctrl + C y podremos comenzar nuevamente desde cero.

     En nuestro ejemplo, la entidad tendrás los siguientes campos y se guardará dentro de nuestro Bundle, por eso, en la primera pregunda, para el shortcut o atajo, escribiremos el nombre del bundle seguido de dos puntos y luego el nombre para nuestra entidad. Ej.: NewsBundle:News, el resto de la información será la siguiente:

CRUD Symfony 2  | www.drupaladicto.com - Consultor especializado en drupal y symfony

     Una vez terminado el proceso, podremos echarle un vistazo a nuestra entidad, ubicada dentro de nuestro bundle, en la carpeta Entity, con el nombre News.php, su aspecto será como la siguiente imagen:

CRUD Symfony 2  | www.drupaladicto.com - Consultor especializado en drupal y symfony

     En este momento, ya estamos listos para que Symfony se encargue de generar la tabla equivalente, con los datos de nuestra entidad, para ello, ejecutaremos el siguiente código en la consola:

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

     Como sólo tendremos una entidad, el proceso Symfony tardará muy poco en crear nuestra tabla y mostrarnos en pantalla el mensaje de confirmación, indicándonos el resultado:

CRUD Symfony 2  | www.drupaladicto.com - Consultor especializado en drupal y symfony

     Gracias a Lando, podremos verificar los datos de nuestra tabla, accediendo a PhpMyAdmin, para ello, si no recuerdas la url, sólo tendremos que escribir el comando de información de lando:

lando info

     Y buscar la url que nos permitirá acceder a la interfaz gráfica de PhpMyAdmin:

CRUD Symfony 2  | www.drupaladicto.com - Consultor especializado en drupal y symfony

     Dentro de PhpMyAdmin, podrás comprobar, que han sido generados correctamente, la tabla News y sus respectivos campos, coincidiendo con el modelo que hemos planteado en nuestra Entidad.

CRUD Symfony 2  | www.drupaladicto.com - Consultor especializado en drupal y symfony