martes, 31 de julio de 2012

Uniendo entidades con Join en Symfony2 en DQL

$em = $this->getDoctrine()->getEntityManager();
$consulta = $em->createQuery('SELECT o FROM OfertaBundle:Oferta o
JOIN o.ciudad c
WHERE c.slug = :ciudad
AND o.fecha_publicacion = :fecha');
$consulta->setParameter('ciudad', 'barcelona');
$consulta->setParameter('fecha', '201X-XX-XX 00:00:00');
$oferta = $consulta->getResult();

Comandos importantes en Symfony2

Chequear instalacion de symofny2

  1. Muestra requisitos faltantes para el correcto funcionamiento de symfony2:                        
    php app/check.php
  2. Comprobamos si symfony2 se instalo correctamente                                                             
    php app/console
Crear Bundle


php app/console generate:bundle --namespace=proyectotije/AereoBundle --bundle-name=AereoBundle --dir=src/ --format=yml --structure=no --no-interaction

Publicar Bundle en web

 php app/console assets:install web

Crear entidades en Symfony2 usando consola


$ php app/console doctrine:generate:entity --entity="MiBundle:MiEntidad"
--fields="nombre:string(100) apellidos:string(100) email:string(255)
fecha_alta:datetime"

Luego de ejecutar éste comando tenemos el objeto de la entidad en symfony2, luego hay que plasmar el objeto físicamente en la Base de Datos.

Crear base de datos

 Una vez configurados los datos de acceso, ya puedes crear la base de datos vacía directamente con el siguiente comando de Symfony2:

$ php app/console doctrine:database:create

A continuación, crea toda la estructura de tablas de la base de datos (también llamada esquema):

$ php app/console doctrine:schema:create

Si en vez de crear las tablas, solamente quieres ver las sentencias SQL que se van a ejecutar, añade la opción --dump-sql:

$ php app/console doctrine:schema:create --dump-sql
CREATE TABLE Ciudad (id INT AUTO_INCREMENT NOT NULL, nombre VARCHAR(100) NOT
NULL, slug VARCHAR(100) NOT NULL, PRIMARY KEY(id)) ENGINE = InnoDB;
CREATE TABLE Usuario ...

Durante el desarrollo de la aplicación suele ser habitual añadir o eliminar propiedades de las entidades. En este caso no es necesario que elimines la base de datos y vuelvas a crearla. Basta utilizar el comando doctrine:schema:update para actualizar la estructura de tablas a la última definición de las entidades:

// Ver las sentencias SQL que se ejecutarían para la actualización
$ php app/console doctrine:schema:update --dump-sql
// Ejecutar las sentencias SQL anteriores
$ php app/console doctrine:schema:update --force